webpack的使用越来越广泛,但其中不乏很多鲜为人知的细节设置,甚至很多人会认为这是webpack的错误。这次,我们就来聊一聊webpack.optimize。CommonsChunkPlugin。
这个插件我相信几乎90%的用webpack的都用了这个,但我同样相信几乎90%的用了这个插件的人都没有正确的使用。
条目:{ 指数:“。/app/main.jsx”, 供应商:[“反应”、“react-dom”,“react-router”,“类名”) }, 输出:{ 路径:路径。解决(__dirname’。/dist '), 文件名:“[名字]。[chunkHash: 8] . js”, publicPath:”, chunkFilename:“[名字]。[chunkHash: 8] . js”, }, 插件:[ 新webpack.optimize.CommonsChunkPlugin ({ 名字:(“供应商”), }), )
上面这个配置应该大家都不陌生吧?打包第三方供应商。
,其实这样写是有问题的。有什么问题呢?我们根据这个配置来操作一下。
,首先,运行起来,我们会得到供应商。js的添加哈希值过后的输出,,
然后,修改索引入口里面的任意文件,再次编译,得到供应商。js的添加哈希值过后的输出。
最后,比较供应商。js两次编译的散列的值,你会惊讶的发现,为什么哈希值改变了?我并没有修改供应商啊。
哈希值改变了,那我们打包这个供应商也就没有意义了。
置于为什么会造成这个问题,我就不班门弄斧了,想要知道的人自己去研究一下webpack的底层。
在这里,我只是抛出一个解决方案:
条目:{ 指数:“。/app/main.jsx”, 供应商:[“反应”、“react-dom”,“react-router”,“类名”) }, 输出:{ 路径:路径。解决(__dirname’。/dist '), 文件名:“[名字]。[chunkHash: 8] . js”, publicPath:”, chunkFilename:“[名字]。[chunkHash: 8] . js”, }, 插件:[ 新webpack.optimize.CommonsChunkPlugin ({ 的名字:“供应商”、“清单”, }), ] >之前没错,就是上面这个配置,只是简单的加了“清单”。
再次做我们前面的测试,你会发现多了一个清单。js,但是供应商的哈希值不再变化了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
详解webpack打包第三方类库的正确姿势