在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''模擬/存根的東西 –