尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Vue CLI安装与项目创建实战:从环境配置到高频踩坑解决

Vue CLI安装与项目创建实战:从环境配置到高频踩坑解决 1. 安装前的核心认知与准备工作1.1 先说清楚 Vue CLI 到底是什么很多刚接触前端的朋友一听“Vue CLI”就头疼觉得是个特复杂的东西。其实拆开看就明白了CLI 的全称是 Command Line Interface翻译过来就是命令行接口。Vue CLI 就是 Vue 官方提供的一套脚手架工具作用是在命令行里敲几条指令就能自动生成一个结构完整、配置好的 Vue 项目骨架。它帮你把 Webpack 构建配置、开发服务器、热更新、ESLint 语法检查这些基础设施全都配好你拿到手就能直接开始写业务代码不用从零开始搭环境。我用一个生活化类比来解释装修房子的时候你不会自己从拉电线、铺水管开始干而是找装修公司出一套标准方案水电、墙面、地板都按要求做好你直接买家具入住就行。Vue CLI 就相当于那家装修公司帮你把一切都铺好。这里必须先说一个重要背景目前 Vue 官方已经转向推荐 Vite 作为新的构建工具Vue CLI 进入了维护模式不再有大版本更新。但这并不意味着它没用了。到 2024 年底大量存量项目、公司内部系统、课程教程都还在用 Vue CLI很多团队因为历史原因也没迁移到 Vite。所以无论你是接手老项目、跟课程学习还是公司技术栈就是 Vue CLI掌握安装和使用方法仍然非常必要。1.2 安装之前必须确认的环境条件装 Vue CLI 之前先检查电脑上的 Node.js 环境这是最基础也是最重要的前提。Vue CLI 本质上是跑在 Node.js 环境里的一套工具没有 Node.js 一切免谈。Windows 用户打开命令行cmd 或 PowerShellmacOS 和 Linux 用户打开终端输入以下两个命令确认环境node -v npm -v正常会在终端里看到类似这样的输出v18.20.4 10.7.0如果提示“node 不是内部或外部命令”或者“command not found”说明 Node.js 没有安装或者没配置环境变量。这时候得先去 Node.js 官网下载对应系统的安装包建议下载 LTS 版本也就是长期支持版。这里有个经验别贪新去装最新的 Current 版本很多工具链依赖对最新 Node 版本的适配总是慢半拍LTS 最稳。Vue CLI 官方文档对 Node.js 版本的要求是 12 及以上版本作为建议我推荐装 16 以上的 LTS 版本。为什么推荐 16 以上因为 Vue CLI 内部用的 Webpack 4 构建链在更高版本的 Node 上运行更顺畅后面讲踩坑的时候会细说这一点。国内用户如果担心 Node 官网下载慢可以用淘宝镜像源下载具体后面再展开。1.3 一个必做的国内加速配置淘宝镜像源这一步虽然不算严格意义上的“必需”但对国内开发者来说没做这一步的体验完全是两回事。npm 默认的官方源在国外国内网络环境下下载依赖经常卡在几十 KB/s甚至直接超时失败。我第一次在没配镜像的情况下装 Vue CLI下载到一半卡了二十分钟最后报了 ECONNRESET 错误退出。从那以后我学乖了任何新电脑上手第一步先把镜像源切换好。检查当前 npm 源npm config get registry默认情况下输出的是 https://registry.npmjs.org/也就是官方源。把它换成淘宝镜像源执行npm config set registry https://registry.npmmirror.com这里注意一下淘宝源现在的官方地址是 npmmirror.com 域名以前那个 registry.npm.taobao.org 已经废弃不用了。网上很多旧教程里写的还是老地址照抄的话会提示连接失败这也是我见过的高频坑之一。换完源之后再执行 npm config get registry 确认一下返回 https://registry.npmmirror.com 就说明配置成功了。这一步做完后面安装速度和成功率会有非常明显的提升。2. 安装 Vue CLI 的完整实战流程2.1 一条命令全局安装的核心操作环境确认无误、镜像源切换好之后就到了真正的安装环节。全局安装 Vue CLI 只需要一条命令npm install -g vue/cli这里用的是 vue/cli 这个包名而不是 vue-cli。早期版本的包名确实是 vue-cli但从 Vue CLI 3 开始包名就改成了 vue/cli属于 npm 的 scoped packages 类型。如果照着老教程装 vue-cli装完大概率是一个跟不上时代的旧版本而且新版命令还会冲突。所以认准 vue/cli没别的。如果要安装指定版本用这种方式npm install -g vue/cli4.5.15指定版本在某些老项目场景下很有用比如公司项目是 Vue 2 加 Webpack 4 的技术栈Vue CLI 5 可能跟部分依赖兼容性不佳这时候装回 4.5.x 反而更稳。不过新项目、没有历史包袱的情况默认装最新版就好。安装过程取决于网络状况快则几十秒慢则几分钟。终端会滚动输出一堆下载进度信息看到类似下面这行就说明装好了added 100 packages in 15s2.2 安装完成后如何验证是否成功什么时候才算真的装好了不是看到 added packages 就算完得验证一下。执行vue --version终端会返回一个版本号比如 vue/cli 5.0.8。看到版本号说明安装成功可以正常使用了。这里有个特别常见的情况安装过程明明没报错输入 vue --version 却提示“vue 不是内部或外部命令”Windows或者“vue: command not found”macOS/Linux。这个问题的根源几乎都是 npm 的全局安装目录没有配置到系统的 PATH 环境变量里。解决办法是找到 npm 的全局安装路径手动把它加进 PATH。查看 npm 全局路径的方法npm config get prefixWindows 系统常见的返回结果是 C:\Users\你的用户名\AppData\Roaming\npm把这个路径添到系统环境变量的 Path 里。macOS 和 Linux 常见的路径是 /usr/local 或者 /usr/local/lib/node_modules。加上之后重新打开一个终端窗口再执行 vue --version 就能识别了。注意改完环境变量之后一定要把之前开着的终端窗口全部关掉再重开不然系统不会重新加载新的环境变量配置。这个细节我当时折腾了半天才反应过来。2.3 为什么我推荐用 npm 而不是 yarn 或 cnpm安装 Vue CLI 的途径不止 npm 一种还有 yarn 和 cnpm我也都试过。yarn 的安装命令yarn global add vue/clicnpm 的安装命令cnpm install -g vue/cli从结果导向来看这三种方式都能把 Vue CLI 装上。但我的建议是没有特殊理由就用 npm。原因有三个。第一npm 是 Node.js 自带的包管理器不用额外安装零依赖零成本。yarn 需要单独装装完还得配全局路径步骤多一个就有多一个出错的可能。第二cnpm 虽然安装速度快但它是通过“软链接”的方式把依赖链接到项目的 node_modules 里在某些场景下会因为依赖文件结构跟 npm 不一致导致一些依赖包查找路径出问题。我遇到过一个项目用 cnpm 装的依赖在构建时反复报 Module not found 错误最后删掉 node_modules 用 npm 重装才解决。第三npm 本身的生态足够成熟搭配前面配置的淘宝镜像源速度和稳定性都有保障没必要额外引入工具增加复杂度。3. 创建并管理 Vue 项目的详细过程3.1 用 vue create 命令创建项目Vue CLI 装好之后最常用的功能就是创建新项目。进入你打算存放项目的目录执行vue create my-projectmy-project 是项目名注意项目名不能包含大写字母、中文和特殊符号只能用中划线或下划线连接小写字母。这个限制是 npm 包命名规范决定的因为创建出来的项目里会包含 package.json而 package.json 的 name 字段必须符合 npm 的命名规则。执行命令后会进入交互式选择界面有两个选项Default ([Vue 3] babel, eslint)默认配置Vue 3 Babel ESLintManually select features手动选择功能这里我的建议是如果你刚接触 Vue 没多久直接选第一个默认配置就行先把项目跑起来看到效果再慢慢了解各个功能的作用。如果你对项目有明确要求比如要用 Vue Router、Vuex、TypeScript、单元测试等就选第二个手动选择。选完功能项之后Vue CLI 会自动执行依赖安装。如果前面配好了淘宝镜像源这一步会很快完成。装完之后终端会提示cd my-project npm run serve按提示操作就能启动开发服务器。3.2 图形化界面 vue ui不敲命令的另一种选择Vue CLI 3 之后还提供了一个图形化管理界面启动方式很简单vue ui执行后会自动打开浏览器进入一个可视化的项目管理面板支持可视化创建项目、管理依赖、运行任务还能方便地查看 Webpack 构建分析和配置。对命令行感到陌生的新手这个界面很友好点几下鼠标就能完成项目的创建和运行。不过我自己平常用得比较多的还是命令行方式因为自动化脚本和远程服务器操作都依赖命令行。vue ui 更适合本地可视化管理的场景你可以把它当做一个备选工具。如果你已经用 vue create 建好了项目也可以在 vue ui 里导入现有项目进行管理两者并不冲突。3.3 目录结构快速扫盲装完代码放在哪里创建完项目后进入项目目录用编辑器打开。整个项目一开始看起来文件不少但核心的就几个src 目录放你写的业务代码包括组件、页面、路由、状态管理等public 目录放静态资源比如 index.html、favicon 图标package.json项目依赖清单和脚本命令定义vue.config.jsVue CLI 的配置文件一开始可能没生成需要时自己创建node_modules依赖包安装目录这个目录很大不要动它出门左转写业务代码基本都是在 src 目录下操作。开发服务器跑起来之后修改 src 里的文件会触发热更新浏览器页面会自动刷新不用手动重启。4. 项目运行时的核心配置与调试技巧4.1 启动开发服务器的完整命令与常见配置项目创建完成后开发阶段的启动命令是npm run serve这条命令会启动一个本地开发服务器默认地址是 http://localhost:8080。终端里会实时显示编译进度、报错信息编译完成后会显示访问地址。开发模式下代码改动会触发自动编译和页面刷新也就是 Webpack Dev Server 提供的热更新功能。实际开发中对默认配置做调整是常有的事。比如 8080 端口被其他程序占用了想在别的端口启动可以在项目根目录创建 vue.config.js 文件// vue.config.js module.exports { devServer: { port: 8081, open: true } }port 字段指定端口号open 字段让服务器启动后自动打开浏览器。做完修改要重启 npm run serve 才能生效。4.2 关闭 ESLint 的“碎碎念”模式项目新创建的默认配置里带了 ESLint 代码检查它会在你写代码的时候对格式、规范做检查发现问题直接在终端和浏览器页面上报错。对于新手来说这个功能有时候挺打击积极性的因为可能只是多了一个空格、引号用错了浏览器就白屏报错。关闭或放宽 ESLint 的方法有两种。第一种方法创建 vue.config.js把 lintOnSave 设为 false// vue.config.js module.exports { lintOnSave: false }lintOnSave 设为 false 之后保存代码不再触发 ESLint 检查构建也不会因为代码风格问题失败。它对已经写错的语法没辙真正的语法错误依然会报错只是不用再被逼着改引号样式了。第二种方法新项目创建时在 Manually select features 里把 Linter / Formatter 这一项取消勾选项目就不会安装 ESLint 相关依赖。已经创建好的项目也可以手动卸载相关依赖但不如直接从 config 配置里关掉来得省事。开发阶段不建议完全关闭 ESLint因为它能在早期拦截很多低级错误和隐患。但如果你被格式报错逼疯了先关掉跑通流程后期熟练了再开回来这个顺序完全合理。4.3 打包构建从开发到上线的关键一步开发调试完成后部署到服务器前需要执行打包命令npm run build这个命令会执行生产环境构建默认把构建产物输出到 dist 目录。打包完成后dist 目录里就是纯静态文件包括 HTML、CSS、JavaScript 和静态资源可以直接丢到 Nginx、Apache 或者对象存储上托管。构建过程中终端输出的信息里有一个关键指标chunk 大小。如果项目里有某个依赖特别大会有对应的警告。这时候可以做路由懒加载、第三方库按需引入等优化具体方法有机会单独讲。打包产物默认识别的资源引用路径是根目录 /如果项目部署在子路径下比如 http://example.com/myapp/页面会白屏。解决办法是在 vue.config.js 里设置 publicPath// vue.config.js module.exports { publicPath: process.env.NODE_ENV production ? /myapp/ : / }开发模式下保持根路径生产模式自动切换为子路径这个配置在很多公司内部系统场景下非常实用。5. 安装和运行高频踩坑记录与排查思路5.1 安装阶段最常见的三大失败场景场景一npm 安装超时或报 ECONNRESET这个问题的根因就是网络不稳定或者默认源在国外速度太慢。解决办法就是前面说的先切淘宝镜像源再重试。如果换了镜像还是超时可以尝试清理 npm 缓存后重装npm cache clean --force清理缓存后重新执行安装命令。这里有个小经验npm 在下载中断时留下的缓存有时候反而是“坏缓存”会干扰后续安装所以遇到报错先清理再重装能省不少排查时间。场景二安装过程报权限错误EACCES / EPERMmacOS 和 Linux 系统上用全局安装容易遇到权限不足的问题表现为各种 EACCES 错误。有些人会建议在命令前面加 sudo比如 sudo npm install -g vue/cli。我明确反对这种方式因为用 sudo 安装的全局包文件归 root 所有后期更新或卸载的时候还得继续用 sudo很容易形成一个永久性的权限黑洞。正确做法是修改 npm 的全局目录权限或者把全局目录配置到用户目录下。这里给出最简单的方法把 npm 的全局前缀指向用户目录mkdir ~/.npm-global npm config set prefix ~/.npm-global然后补充 PATHecho export PATH~/.npm-global/bin:$PATH ~/.zshrc source ~/.zshrc场景三切换镜像源后还是慢这种情况通常是镜像源缓存问题或者网络环境本身就受限可以换其他镜像源试试npm config set registry https://mirrors.cloud.tencent.com/npm/腾讯云镜像源也是备选之一。如果多个镜像源都试了还是不行还有一个办法是使用代理但代理的配置相对复杂且依赖外部环境这里不展开。5.2 安装成功却提示无法识别 vue 命令这个问题前面提过归根结底是 PATH 环境变量没有包含 npm 全局安装目录。Windows 用户按 Win 键搜索“环境变量”打开“编辑账户的环境变量”界面在 Path 里添加 npm 全局目录确定后重开终端。macOS 和 Linux 用户需要在自己的 shell 配置文件比如 .zshrc 或 .bashrc里加一行export PATH$(npm config get prefix)/bin:$PATH这里有一个容易忽略的细节改完环境变量后正在运行的终端窗口不会自动加载新配置必须完全关闭重新打开才有效。大部分人改完配置说“怎么还是不行”十有八九是没重开终端。5.3 Node 版本与 Vue CLI 版本不匹配导致编译失败这个坑最隐蔽。Vue CLI 4 底层用的是 Webpack 4而 Webpack 4 在 Node.js 17 及以上版本中运行时会报一个关于 OpenSSL 的错误信息类似这样Error: error:0308010C:digital envelope routines::unsupported这个错误我见过好多次原因不是代码有问题而是 Webpack 4 依赖的加密算法在 Node 17 之后默认加密库更换了导致兼容性崩了。针对这个问题的解决思路有三个第一个思路降级 Node 版本到 16。可以用 nvmNode Version Manager来管理多个 Node 版本随时切换。第二个思路升级 Vue CLI 到 5.x 版本它内部兼容了新版 Node 的加密变化。执行npm update -g vue/cli第三个思路如果项目依赖必须停留在 Webpack 4又不方便切换 Node 版本可以在启动命令里临时指定旧版加密协议NODE_OPTIONS--openssl-legacy-provider npm run serveWindows 的用户用 PowerShell 执行的时候命令写法不一样$env:NODE_OPTIONS--openssl-legacy-provider npm run serve这个办法能救命但不建议长期依赖毕竟它只是绕过问题而非解决问题。我自己的原则是能用 nvm 切换 Node 版本就切换让构建工具和运行环境匹配比加兼容参数靠谱得多。5.4 运行时报错模块找不到先检查这个目录项目跑起来之后报 Module not found 一类错误比如“Module not found: Error: Cant resolve”大多数情况就两个原因。第一个原因是依赖没装完整。比如从 Git 仓库克隆了别人的项目本地还没执行 npm install就急着 npm run serve那必然报错。解决办法是先执行一遍 install。第二个原因是依赖包损坏。删除整个 node_modules 目录和 package-lock.json重新安装rm -rf node_modules package-lock.json npm installWindows 系统上删除 node_modules 可能因为文件占用而报错可以用命令先关掉正在运行的开发服务器再删除或者用 rimraf 工具npm install rimraf -g rimraf node_modules5.5 构建时内存溢出的解决办法项目大起来之后npm run build 偶尔会报 JavaScript heap out of memory 的错误。这是 Node.js 进程默认内存上限不够用了默认大小通常是 1.5GB 到 2GB 左右。解决办法是调高内存限制NODE_OPTIONS--max-old-space-size4096 npm run build常规项目 4GB 基本足够极大型项目可以调到 8GB。这个配置在 CI/CD 流水线里也同样适用。6. 常见问题速查表与个人经验总结6.1 常见问题对照表问题现象根本原因一条命令或操作解决npm 安装超时或报 ECONNRESET网络问题或源太慢npm config set registry https://registry.npmmirror.com安装报 EACCES 权限错误全局目录权限不足避免 sudo改用用户目录作为 npm 前缀vue 命令无法识别PATH 未包含 npm 全局目录手动添加全局目录到 PATH 并重开终端启动报 OpenSSL 错误Webpack 4 与 Node 17 不兼容降 Node 版本或用 NODE_OPTIONS 兼容参数模块找不到依赖未装或损坏删 node_modules 后 npm install打包内存溢出Node 内存上限不够NODE_OPTIONS--max-old-space-size4096 npm run build项目运行白屏publicPath 配置不对vue.config.js 设置 publicPath浏览器端口被占用8080 端口冲突修改 devServer.port 配置6.2 如果只想装一次记住这几个核心原则把踩过的坑和总结的经验浓缩成几句话。环境先行版本匹配。装任何工具前先确认 Node.js 版本和工具要求的版本兼容性。这一点在安装 Vue CLI 时尤其重要工具链版本错位造成的报错排查起来非常耗时。镜像源是国内的命脉。不管 npm、yarn 还是其他包管理器装完 Node.js 第一件事就是把镜像源切到国内。这个配置能为后续所有安装省下大量时间。报错先看路径和权限。我遇到过的绝大多数安装类问题最后定位到根因不是 PATH 没配好就是权限不够真正复杂的技术问题反而少见。遇到不该出现的错误先怀疑这两个最常见的地方。删掉重装是万能的兜底方案。遇到诡异的依赖问题不管三七二十一删 node_modules、清缓存、重装八成能解决。这招看着粗暴但效率比翻几个小时的源码高得多。6.3 一个关于 Vue CLI 的真诚建议最后多说一句Vue CLI 终究是会慢慢退出历史舞台的Vite 生态已经相当成熟新项目完全可以直接从 Vite 起步。但这不意味着今天的内容学了没用。Vue CLI 里面涉及的 Webpack 概念、环境变量配置、路径处理、构建优化思路这些知识在切换到 Vite 或者其他构建工具时依然通用。技术工具会迭代底层的构建思维和排错方法是长期积累下来的财富。先把一条链路彻底吃透以后碰到新工具上手成本会低很多。如果你在安装或者使用 Vue CLI 时遇到本文没有覆盖到的问题优先去官方文档查再去 GitHub 的 issues 区搜索关键词最后考虑在技术社区提问。提问的时候把 Node 版本、Vue CLI 版本、npm 版本和完整报错信息贴出来这样别人才能高效地帮你定位问题。少走弯路从把信息发全开始。
返回列表