webpack3.0升级4.0的方法步骤
1.webpack 3.11升级4.26
为了提升打包效率,在webpack3.11基础之上做了升级,webpack4.0发布以来,零配置的webpack对项目本身提供的“打包”和“压缩”功能已经做了优化,如果在项目开始使用4.0而不用vue-cli的默认配置,遇到的问题或许能少一些。
2. 安装/升级依赖
这些依赖有的是在build过程中发现依赖有新的替换或者报错,逐步替换的,如果想遇到多个坑,可以先把webpack、webpack-cli升级到对应版本
devDependencies:
"extract-text-webpack-plugin": "^4.0.0-beta.0" "html-webpack-plugin": "^4.0.0-beta.14" "mini-css-extract-plugin": "^0.9.0" (旧的optimize-css-assets-webpack不支持了) "preload-webpack-plugin": "^3.0.0-beta.4" "script-ext-html-webpack-plugin": "^2.1.3" "vue-loader": "^15.3.0" "webpack": "^4.26.1" "webpack-cli": "^3.1.2" "webpack-dev-server": "^3.2.1" "script-ext-html-webpack-plugin": "^2.1.3"
3. 遇到的问题
升级webpack后,build报错ERROR in ./src/App.vue
Module Error (from ./node_modules/vue-loader/lib/index.js
解决升级vue-loader至15.3.0,
webpack.base.conf.js添加
const {VueLoaderPlugin} = require('vue-loader') module.exports中添加 plugins:[new VueLoaderPlugin()]
修改配置文件 webpack.prod.conf.js
webpack.optimize.CommonsChunkPlugin has been removed, please use config.optimization.splitChunks instead.
解决
webpack.prod.conf.js webpackConfig配置: optimization: { noEmitOnErrors: true, concatenateModules: true, splitChunks: { chunks: 'all', name: 'mon', }, runtimeChunk: { name: 'runtime' } } webpack.prod.conf.js webpackConfig配置: optimization:{ namedModules: true },
Plugin could not be registered at ‘html-webpack-plugin-before-html-processing'. Hook was not found.
解决
npm i preload-webpack-plugin@next -D
Tapable.plugin is deprecated. Use new API on .hooks instead
问题extract-text-webpack-plugin兼容问题 ,功能extract css into its own file
解决 卸载extract-text-webpack-plugin,安装mini-css-extract-plugin
new MiniCssExtractPlugin({ filename: utils.assetsPath('css/[name].[contenthash].css'), allChunks: false, }),
build出错ERROR in TypeError: Cannot read property ‘hash' of undefined
解决:
去掉这段 //打包计时 const SpeedMeasurePlugin = require("speed-measure-webpack-plugin"); const smp = new SpeedMeasurePlugin();
WARNING in configuration
The ‘mode' option has not been set, webpack will fallback to ‘production' for this value. Set ‘mode' option to ‘development' or ‘production' to enable defaults for each environment.
You can also set it to ‘none' to disable any default behavior. Learn more:
解决webpackConfig添加 mode: ‘production'
Tapable.plugin is deprecated. Use new API on .hooks instead
解决
npm i --save-dev extract-text-webpack-plugin@next
会下载到 extract-text-webpack-plugin@4.0.0-beta
Error: webpack.optimize.CommonsChunkPlugin has been removed, please use config.o ptimization…
解决:
- 去掉 webpack.optimize.CommonsChunkPlugin相关配置
- webpackConfig中与plugins的同级添加
optimization: { splitChunks: { cacheGroups: { mons: { name: "mons", chunks: "initial", minChunks: 2 } } } },
Unhandled rejection Error: “dependency” is not a valid chunk sort mode
new HtmlWebpackPlugin({ filename: config.build.index, template: 'index.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency' }),
解决chunksSortMode改为auto或者注释
至此:npm run build 正常
接下来调npm run dev,直接运行成功
4.
开启cache的情况下,原来打包时间22s左右,现在build最快8s左右
升级思路
- 卸载webpack旧版本、安装新版本webpack, webpack-cli
- 遇到loader、plugin报错,升级loader、plugin,有的在4.0不支持,需要换成新的
- 卸载 ExtractTextPlugin、删除对应配置,改用 mini-css-extract-plugin
- 配置环境mode
- 其它wenpack3.0优化配置兼容处理
到此这篇关于webpack3.0升级4.0的方法步骤的文章就介绍到这了,更多相关webpack3.0升级4.0内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程