Open WarpPrism opened 5 years ago
最近将vue项目的打包工具webpack升级到了V4,原有配置是基于Vue-CLI 2生成的,其中部分过程做了微调。方便起见,就直接在原有基础上通过安装新依赖,调整配置,最后也顺利完成了升级。
webpack4发布
据官方发布消息称,webpack4有以下几个特点:
其实,实测下来,提示性能普遍在50% ~ 60%之间,如果项目本身就比较小,速度提升则更不明显。Anyway,有提升就好。
mode有两个值 development和production 即开发模式和生产模式 当你设置不同的mode时,会默认开启以下特性:
development
production
webpack新增optimization选项,主要用于构建过程中的代码优化,常用配置如下所示:
// webpack4 新增优化选项 提供minify splitChunks等功能 optimization: { minimize: true, // 默认开启压缩 minimizer: [ // ES 压缩 new TerserPlugin({ cache: true, parallel: true, sourceMap: config.build.productionSourceMap, terserOptions: { // https://github.com/webpack-contrib/terser-webpack-plugin#terseroptions warnings: false, compress: { drop_console: true } } }), // CSS 压缩 去重 // Compress extracted CSS. We are using this plugin so that possible duplicated CSS from different components can be deduped. new OptimizeCSSPlugin({ cssProcessorOptions: config.build.productionSourceMap ? { safe: true, map: { inline: false } } : { safe: true } }) ], // 提取webpack运行时的代码 runtimeChunk: { name: 'manifest' }, // 提取公共模块,防止模块重复打包 代替CommonsChunkPlugin splitChunks: { chunks: 'async', minSize: 30000, // 形成一个新代码块最小的体积 minChunks: 1, maxAsyncRequests: 5, // 按需加载时候最大的并行请求数 maxInitialRequests: 3, // 一个入口最大的并行请求数 automaticNameDelimiter: '~', // 打包分割符 name: true, cacheGroups: { // 拆分样式 styles: { name: 'styles', test: /\.css$/, chunks: 'all', enforce: true, priority: 1000 }, // 单独拆分vue框架 vueFramework: { name: 'vueFramework', test: (module) => { return /vue|vue-router|vuex/.test(module.context); }, chunks: 'initial', priority: 200, }, // 拆分其他vendor vendor: { test: /[\\/]node_modules[\\/]/, name: 'vendor', chunks: 'initial', priority: 100 } } } }
webpack受parcel rollup等打包工具启发,从v4版本不再强制需要webpack.config.js,以做到开箱即用。通过命令行 webpack --mode development 即可对小型项目打包
plugins: [ // 引入vue-loader插件 new VueLoaderPlugin(), new MiniCssExtractPlugin({ filename: utils.assetsPath('css/[name].[contenthash].css') }) ]
如果嫌手动配置webpack4麻烦,(毕竟不是人人都是webpack配置工程师。。。) 那可以直接采用vue cli3重新搭建一套脚手架。
vue cli 官网
npm install -g @vue/cli 或者 yarn global add @vue/cli vue ui
然后,一切都是你熟悉的图形化配置了,vuex? vue-router? babel? eslint? typescript? unit test?等等,统统一键加入你的项目中,相当方便。
vue项目 webpack4升级实践
最近将vue项目的打包工具webpack升级到了V4,原有配置是基于Vue-CLI 2生成的,其中部分过程做了微调。方便起见,就直接在原有基础上通过安装新依赖,调整配置,最后也顺利完成了升级。
webpack4 新特性
webpack4发布
据官方发布消息称,webpack4有以下几个特点:
1. webpack 4 速度提升98%
其实,实测下来,提示性能普遍在50% ~ 60%之间,如果项目本身就比较小,速度提升则更不明显。Anyway,有提升就好。
2. 引入mode,包含默认配置
mode有两个值 development和production 即开发模式和生产模式 当你设置不同的mode时,会默认开启以下特性:
development
production
3. 插件变化:移除CommonsChunkPlugin等,使用新的配置项optimization代替
webpack新增optimization选项,主要用于构建过程中的代码优化,常用配置如下所示:
4. 增加webAssembly支持
5. 支持多种模块类型
6. 推崇0配置
webpack受parcel rollup等打包工具启发,从v4版本不再强制需要webpack.config.js,以做到开箱即用。通过命令行 webpack --mode development 即可对小型项目打包
如何升级
Vue CLI 3.0 +
如果嫌手动配置webpack4麻烦,(毕竟不是人人都是webpack配置工程师。。。) 那可以直接采用vue cli3重新搭建一套脚手架。
vue cli 官网
安装运行
然后,一切都是你熟悉的图形化配置了,vuex? vue-router? babel? eslint? typescript? unit test?等等,统统一键加入你的项目中,相当方便。
最后,期待webpack5