感觉是突然之间,webpack4的消息就满天飞了,听说打包速度提高了很多,还有最大的噱头是实现了零配置,leader有一天就吩咐我说,有时间把我们的项目也升个级呗。好嘞。
1.x到2.x
这次升级跨度比较大,我们是从webpack1.x升级到4.x,因为1.x与2.x相差挺大,所以第一件事,就是先升到2.x,比较大的改动就是loader的配置方式
// 1.x preLoaders: [ { 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.x module: { 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
第一步:版本升级
- 不再支持node 4,可以直接升级到8.x版本
- webpack升级
npm install webpack@4 --save npm 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/
,但由于项目是多页面的,所以这一步并没有省略,根据实际情况来。
第三步 移除CommonsChunkPlugin
//替代方案 module: { rules: [ ... ] }, optimization: { splitChunks: { chunks: "all", // 必须三选一:'initial' | 'all' | 'async' minSize: 0, minChunks: 1, maxAsyncRequests: 1, maxInitialRequests: 1, name: () => {}, cacheGroups: { vendor: { chunks: 'all', test: /node_modules/, // 正则规则验证,如果符合就提取chunks name: "vendor" // 要缓存的分割出来的chunk名称 }, default: { chunks: 'all', name: 'commons', reuseExistingChunks: true } } } }
因为多个页面,所以结合了html-webpack-plugin
new HtmlWebpackPlugin({ template: 'index.html', chunks: ['vendor', 'commons', 'index'] })
刚开始一直出错,是因为我没有复写default
,也没有default:false
,所以其实默认配置有将所有的模块的公共部分分离到某个文件中,但我在HtmlWebpackPlugin
中的chunks
中又没有添加,所以要么覆写原来的默认配置,要么就关闭默认配置。
第四步:配置postcss autoprefixer
在根目录下创建一个文件`postcss.config.js`
module.exports = { plugins: [ require('postcss-inline-svg')({ removeFill: false }), require('postcss-pxtorem')({ replace: process.env.NODE_ENV === 'production', rootValue: 750 / 16, minPixelValue: 1.1, propWhiteList: [], unitPrecision: 5 }), require('autoprefixer')({browsers: ['iOS>7', 'Android>4']}) ] }; ... { test: /\.(css|less)$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use:[{ loader: 'css-loader', options: { autoprefixer: false } }, { loader: 'postcss-loader', options: { sourceMap: true } }, { loader: 'less-loader', options: { relativeUrls: true } }] }) }, ...
第五步:不需要UglifyJsPlugin插件
只需要设置optimization.minimize: true
就行,production mode
下面自动为true
以上只是在原有项目的基础上对webpack 4
的升级,还有一些特性并没有用到,所以没有提及,比如sideEffects
、javascript/auto javascript/esm javascript/dynamic
、webassembly/experimental
等等,有机会再去探索。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]