几天前webpack发布了新版本v4.0.0,其中做了很多改动,包括0配置以及移除了CommonsChunkPlugin等。由此而来的还有之前webpack3.x的项目如何迁移到新的webpack版本,本文就一个新的vue-cli创建的基于webpack的项目进行迁移。
题外话:不要看0配置是很有噱头,基本是不能满足大部分用户啊的需求,不过加入了更多的默认配置确实也方便了用户,配置相对简单,是一种开箱即用的方式。毕竟之前包裹的0配置确实抢了很多webpack的风头,然后也去弄了一下包裹使用包裹+ vue的简单模版工程,有兴趣可以看一下。
<强>
强>
<强> 0。安装强>
不在只安装<代码> webpack> 代码即可,还需要安装一个<代码> webpack-cli 代码>:
全局安装
sudo npm安装- g webpack webpack-cli
局部安装(当前文件夹)
npm安装——save-dev webpack webpack-cli
<强> 1。0配置强>
默认的入口为<代码>”。/src/"> 代码和默认出口<代码>”。/dist”代码>,
对压缩(optimization.minimize)的设置,默认在生产时开启,在开发时关闭。
默认配置不仅限于上述两项。
<强> 2。模式/模式参数
强>
新增了模式/J讲问幢硎臼强⒒故巧?模式有两个可选值:开发和生产、生产不支持监听,生产侧重于打包后的文件大小,开发侧重于构建的速度。
>以前webpack——模式发展也可以在配置文件中配置:
//webpack.config.js 模块。出口={ 模式:“生产”,//? } >之前<强> 3。对uglifyjs升级强>
在之前的vue脚手架创建的基于webpack的工程,在<代码> webpack.prod.conf.js> 代码中可以清晰的看到配置中有这么一行:
//UglifyJs不支持ES6 +,您还可以使用更好的treeshaking babel-minify: https://github.com/babel/minify
引用>
在webpack4.0中已经可以压缩es6代码,如:
类用户{ getUsername () {//要做的 } }压缩之后为:
<强> 4。移除装载机、必须使用规则强>
在webpack3.x中还保留之前版本的装入器,与规则并存都可以使用,在新版中完全移除了装载机、必须使用规则。
<强> 5。调查强>
在模块的package.js中添加调查:假的,当使用出口单独导出的时候,不会打包出口之外的其他文件,使打包的文件更小。
相关链接:https://github.com/webpack/webpack/tree/master/examples/side-effects
<强> 6。webpack4支持多种形式的模块类型,但是有时候可能需要加上类型进行配合强>
如果是CommonJS、AMD、ESM三种类型的模块,使用javascript/汽车;
如果是EcmaScript模块(.mjs),使用javascript/esm,其他的模块类型将不生效;
如果只有CommonJS和EcmaScript模块不可用,使用javascript/动态;
如果是json类型的文件,允许使用要求和进口来导入json,使用json;
如果是Webassembly,使用Webassembly/实验——官方说是一个实验性的功能。
举个栗子:
规则:[ { 测试:/\ . json/美元, 类型:“javascript/汽车” } )<强> 7。支持ES6的方式导入JSON文件,并且可以过滤无用的代码强>
下面是三种导入json文件的方法:
让jsonData=https://www.yisu.com/zixun/require ('/data.json。'); 从“进口jsonData。/data.json ' 从“进口{一}。/data.json ' >之前其中使用进口{一}”。/data.json引入的json文件会忽略没导入的代码,打包时只会将第一次的打进去。
<强> 8。移除CommonsChunkPlugin,用optimization.splitChunks和optimization.runtimeChunk来代替强>
这里内容有点多,不做具体介绍,后续可能会出一篇有关optimization.splitChunks的文章,在下面从3. x迁移的时候会有简单介绍,出了上面的新版relesase链接外,下面还推荐几个不错的链接:
详解webpack4升级指南以及从webpack3.x迁移