详解webpack打包第三方类库的正确姿势

  

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打包第三方类库的正确姿势