一. 升级目标
vue-cli从v4版本升级到v5版本(同时升级到webpack5)
 node-sass不再支持,需要删除依赖,并将/deep/ 替换为v::deep方式
二. vue-cli4升级为vue-cli5
1.全局安装vue-cli
npm install -g @vue/cli
 
// 检查是否更新成功
vue -V
 
2.一次性更新所有插件
vue upgrade
 
3.升级至webpack5
npm install webpack@latest webpack-cli@latest
 
4.修改vue.config.js内配置,升级到webpakc5后部分属性已废弃
1、disableHostCheck: true 替换为  allowedHosts: 'all'
2、jsonpFunction 替换为 chunkLoadingGlobal
3、config.module.rules[0].use.splice(1, 0, { loader: require.resolve('thread-loader') }) 此配置暂时注释
 
5.替换node-sass(node-sass已停止维护,升级到webpack5后版本不支持,需替换为sass-loader)
// 卸载node-sass
npm uninstall node-sass
 
// 安装sass-loader
npm i sass sass-loader@13.0.2
 
6.本地验证 npm run serve
三. 常见错误
1.vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
 
 解决方法: 降低node版本即可,我这边降低后的版本是14.17.0
 2. webpack < 5 used to include polyfills for node.js core modules by default
 
 解决方案:
1. npm install node-polyfill-webpack-plugin;
2. 在vue.config.js文件中添加这几行代码:
   const NodePolyfillPlugin = require('node-polyfill-webpack-plugin');
    plugins: [new NodePolyfillPlugin()],
 
四.升级后的依赖文件
// package.json 部分修改
{
    // vue-cli相关
    "@vue/cli-plugin-babel": "~5.0.8",
    "@vue/cli-plugin-eslint": "~5.0.8",
    "@vue/cli-plugin-router": "~5.0.8",
    "@vue/cli-plugin-vuex": "~5.0.8",
    "@vue/cli-service": "~5.0.8",
    ...
    // babel相关
    "@babel/core": "^7.12.16",
    "@babel/eslint-parser": "^7.12.16",
    ...
    // eslint相关
    "eslint": "^7.32.0",
    "eslint-plugin-import": "^2.25.3",
    "eslint-plugin-vue": "^8.0.3",
    "eslint-plugin-vuejs-accessibility": "^1.1.0",
    ...
    // webpack相关
    "webpack": "^5.74.0",
    "webpack-cli": "^4.10.0"
    ...
    // css相关
    "postcss": "^8.4.16",
    "sass": "^1.54.4",
}
                
















