Vue CLI Node 18+ 升级
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_5eb9ade7/update-node。
技能介绍
你在对抗什么问题
老 Vue CLI 项目若仍锁在 Node 14 附近,升到 Node 18+ 时常见三类失败:babel 插件缺失、eslint-loader 解析失败、以及 Cannot find module——很多并不是业务代码写错,而是 Node 14 时代「幽灵依赖」(phantom deps)被隐式解析,升级后锁文件与 node_modules 结构一变就暴露。
本技能面向 Vue CLI + pnpm 栈,在作者已在 Node 22(.nvmrc 锁定)下跑通的路径上,把检测、切版本、重装依赖、babel.config.js 对齐和构建验证串成可重复流程。
技能如何推进升级
- 检测当前状态:若已是 Node 18+,可跳过切版本与重装,直接进入配置与验证。
- 切换 Node 版本:与项目
.nvmrc或目标 LTS 对齐(资料中示例为 Node 22)。 - 清空并重装依赖:删除
node_modules后执行pnpm install;pnpm workspace 必须在对应子包目录操作,否则锁文件与依赖树会对错项目。 - 校正
babel.config.js:采用 Vue CLI 常见写法,并确保显式依赖就绪,例如@babel/plugin-proposal-object-rest-spread、eslint-loader@2.2.1、qs等(避免再靠幽灵解析)。 - 验证构建:以生产构建为准;通过标准包括无 babel 报错、无模块找不到、无 eslint-loader 失败。
适用边界与回滚
- 技能描述的是 Vue CLI 升级路径,不是 Vite / Nuxt 3 等其它脚手架的通用迁移手册。
- 若构建仍失败:先核对
pnpm-lock.yaml是否在正确目录生成、babel.config.js语法、以及node_modules/.bin/eslint-loader是否存在。 - 需要回滚时,可恢复
babel.config.js、package.json、pnpm-lock.yaml到 Git 中已知好版本,再重装依赖。
使用场景
- 公司 CI 或本机 Node 升到 18+ 后,老 Vue CLI 项目 `pnpm run build:prod` 报 babel 或模块找不到,需要按步骤切版本并重装依赖。
- 项目已用 `.nvmrc` 锁定 Node 22,但 `node_modules` 仍是旧版本下装的,需要清空后 pnpm install 并对齐 `babel.config.js`。
- pnpm workspace 里某个 Vue CLI 子包升级 Node 后构建失败,需要在对应子项目目录执行安装与生产构建验证。
- 历史项目依赖 `@babel/plugin-proposal-object-rest-spread`、`eslint-loader@2.2.1`、`qs` 等曾靠隐式解析,升级后要显式安装并验证 eslint-loader 可执行。
适合人员
- 维护公司内 Vue CLI 遗留前端、且团队已统一使用 pnpm 的业务前端工程师,要把本地与 CI 的 Node 版本拉到 18+ 并保持可构建。
- 负责前端基建的同学,需要在不整体重写脚手架的前提下,处理 Node 升级带来的 eslint-loader 与 Babel 配置回归。
- pnpm monorepo 里只负责某一个 Vue CLI 子应用的开发者,需要在正确子包目录完成依赖重装与生产构建验收。
- 接手 integratedServicesIndex 类老项目的新成员,想沿用作者已验证的 Node 22 + 显式依赖清单,跳过重复的试错排查。