在Grunt或Gulp中,我曾经自己定义所有需求,比如:stuff只能用于生产,livereload只能在dev服务器上启用。webpack开发和生产构建模式有什么区别?
的WebPack处理这对自己,通过its -d
and -p
options,即切换装载机minimize
模式(最装载机船舶及其相关的minifiers),该devtool
和类似的东西(我不知道到底是什么)。大多数“只是有效”。
但另一方面,有一些库有一个开发和生产模式。例如,React查看process.NODE_ENV
,如果它是production
,则它disables the propTypes
checking(稍后将由缩小器作为死代码剥离,从而减少捆绑包大小)。在Webpack中,一个common way to do this is to use the DefinePlugin
。
问题是,这个插件只能在生产版本中启用。因为这个,有些人甚至去了having 2 separate webpack configs。这看起来有点矫枉过正,因为大部分工作已经由webpack完成了。我想避免这种情况。
要找到一些更好的解决办法,我想了解究竟是什么改变当我使用-d
或-p
选项,以及它如何影响所有的装载机和插件。我没有在任何地方找到它。现有的文档只是提到“调试模式”或“监视模式”,而没有解释它实际上意味着什么。
请注意,我并没有要求做这个答案。一个好的,详细的解释将不胜感激。
谢谢。但是我有一些疑问:我发现['-p'标志设置了'process.env.NODE_ENV'](https://github.com/webpack/webpack/blob/master/bin/convert-argv。 js#L28),但是'-d'怎么样?我也没有在该源文件中看到“--optimize-occurence-order”。 – mik01aj
是的,你说得对。他们已经通过['webpack.LoaderOptionsPlugin'](https://git.io/vr8CG)删除了webpack @ 2中'-p'的'OccurenceOrderPlugin'并添加了新的最小化机制。定义用于开发的'process.env.NODE_ENV'在处理文件时有点费用,因为它用字符串替换了变量。它也允许你使用与'development'不同的NODE_ENV,所以你可以为'NODE_ENV ='test''模拟/存根的东西 –