經過一番嘗試,我發現webpack.definePlugin
和通過npm腳本傳遞的環境變量的效果是一樣的。 爲什麼需要definePlugin?definePlugin和env變量有什麼區別?
回答
那麼,在某些情況下,在代碼中廣泛使用env變量會變得冗長或不安全。
實例一:添加更多的邏輯
NODE_ENV=production webpack ...
隨着DefinePlugin,你可以定義
__PRODUCTION__: process.env === 'production'
然後在代碼中你可以使用__PRODUCTION__
而不是再次寫入process.env === 'production'
遍地碼。
例2:然後你使用__ENV__
比process.env
其他會給少驚喜提供後備
__ENV__: process.env || 'development'
。
此外,你也可以定義其他東西,不限制env變量。
因爲你可能只想設置一個全局es6變量而沒有env變量,例如,當你有一個環境變量和一個具有相同名稱但用途不同的全局變量時。
一個典型的例子:
不能直接客戶端代碼使用process.env.NODE_ENV
。
因爲它的代碼是nodejs
。
但是,很多客戶端代碼,特別是third-party
庫。
他們將有一些development
的代碼,如warning
,log
等等。
喜歡:
if(process.env.NODE_ENV === 'development') { makeWarinig(); }
但在生產中,您不希望這些代碼bundle.js
。所以,你可以通過NODE_ENV=production
來告訴library
。
webpack.DefinePlugin
將取代process.env.NODE_ENV
與您在webpack.config.js
中定義的相同。
像:nodejs cli
環境變量傳遞給webpack.config.js
,並通過webpack
DefinePlugin
將該變量傳遞給客戶端代碼。
通常在我們的項目中,我們使用新的webpack.DefinePlugin來定義可以在客戶端全局使用的全局值。
if (process.env.NODE_ENV === 'production') {
config.plugins.push(
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}
}),
new webpack.optimize.UglifyJsPlugin()
)
}
兩個process.env.NODE_ENV看起來相同但實際上不同。 第一個是在package.json中定義的。它看起來像:
"scripts": {
"build": "NODE_ENV='production' webpack -p"
},
它在節點服務器端定義NODE_ENV ='生產'。它可以在webpack中訪問,但不能在客戶端訪問。所以在webpack.config.js中,我們需要重新定義它,以便我們可以在我們的客戶端使用它。
- 1. TARGET_ARCH和TARGET_MACH變量有什麼區別?
- 2. 變量的=和=>有什麼區別?
- 3. 對象和變量有什麼區別?
- 4. 參考變量和常量指針變量有什麼區別?
- 5. 變量===常數和常量===變量有什麼區別
- 6. 非局部變量和全局變量有什麼區別?
- 7. C:指針=變量和指針=變量有什麼區別?
- 8. PL/SQL變量和非PL/SQL變量有什麼區別?
- 9. 閱讀查詢變量和正文變量有什麼區別?
- 10. 靜態變量和全局變量(Java)有什麼區別?
- 11. 在shebang中使用#!/ usr/bin/env或#!/ bin/env有什麼區別?
- 12. 這些PHP變量有什麼區別?
- 13. 從文件導出linux中的env變量時有什麼區別?
- 14. 「env」和「set」(在Mac OS X或Linux上)有什麼區別?
- 15. Tensorflow中的張量和變量有什麼區別
- 16. 靜態和常量變量有什麼區別?
- 17. 在Tensorflow中,變量和張量之間有什麼區別?
- 18. 區別:%% a和%variable%變量之間的區別是什麼?
- 19. 在聲明變量時使用「」和「'和()有什麼區別?
- 20. 公共和私有變量有什麼區別
- 21. 有關Windows的系統和環境變量有什麼區別?
- 22. 靜態變量和靜態變量的區別是什麼?
- 23. 有什麼區別`和$(Bash中有什麼區別?
- 24. if(CONST ==變量)或if(變量== CONST)有什麼區別?
- 25. SSIS 2012中的參數和變量有什麼區別?
- 26. Java中的String ...變量和String varible []有什麼區別?
- 27. 類變量和類實例有什麼區別?
- 28. const和靜態變量之間有什麼區別?
- 29. javascript屬性和javascript變量有什麼區別?
- 30. 屬性和實例變量有什麼區別?