感觉是突然之间,webpack4的消息就满天飞了,听说打包速度提高了很多,还有最大的噱头是实现了零配置,leader有一天就吩咐我说,有时间把我们的项目也升个级呗。好嘞。
1.x到2.x
这次升级跨度比较大,我们是从webpack1.x升级到4.x,因为1.x与2.x相差挺大,所以第一件事,就是先升到2.x,比较大的改动就是loader的配置方式
// 1.xpreLoaders: [ { test: //.vue$/, loader: 'eslint', exclude: /node_modules/ }, { test: //.js$/, loader: 'eslint', exclude: /node_modules/ }],loaders: [ { test: //.vue$/, loader: 'vue' }, { test: //.json$/, loader: 'json' }, { test: //.html$/, loader: 'html' },...]//2.xmodule: { rules: [ { test: /.vue$/, use: 'eslint-loader', enforce: 'pre', // 对应1.x的preLoaders exclude: /node_modules/ }, { test: /.js$/, use: 'eslint-loader', enforce: 'pre', exclude: /node_modules/ }, { test: //.vue$/, use: 'vue-loader' }, { test: //.json$/, use: 'json-loader' }, { test: //.html$/, use: 'html-loader' }, ... ]},
而且loader
一定要写完整,vue-loader
如果只写vue
会报错。loader
还可以通过options
进行配置。
{ loader: 'css-loader', options: { autoprefixer: false }}
旧版的链式调用也用数组替代。
1.x
style!postcss!less
2.x
use: [ "style-loader", "css-loader", "less-loader" ]
webpack2.x
默认支持es6的模块,所以在编译时候没有必要将它们先转换CommonJS
模块再处理,babel-preset-es2015-webpack
已经支持不转换模块中的import
和export
,只需要设置.babelrc
"presets": [ ["es2015", { "modules": false }]]
另外就是插件的升级,运行时哪个插件报错就升级哪个插件,屡试不爽。
2.x到4.x
第一步:版本升级
npm install webpack@4 --savenpm install webpack-cli --save // 不要忘记这一点,用来启动webpack的
插件升级,同理,哪个报错就升级哪个,除了html-webpack-plugin
用下面的方法升级,原因是作者还未来得及升级
npm i webpack-contrib/html-webpack-plugin --save-dev
extract-text-webpack-plugin
只有最新的beta版本才支持,所以npm install extract-text-webpack-plugin@next --save-dev
第二步 运行命令中添加 --mode development
和--mode production
PS:虽然说webpack 4
是零配置,入口默认是src/index.js
,出口是dist/
新闻热点
疑难解答
图片精选