試してみたところ、webpack.definePlugin
の効果と、npmスクリプトのフォームに渡された環境変数が同じであることがわかりました。 なぜdefinePluginが必要ですか?definePlugin変数とenv変数の違いは何ですか?
答えて
まあ、場合によっては、コードでenv変数を広範囲に使用すると冗長または危険になることがあります。
例1:DefinePluginで
NODE_ENV=production webpack ...
多くのロジックを追加し、あなたは次に、コードであなたが何度も何度もprocess.env === 'production'
を書くのではなく、__PRODUCTION__
を使用することができます
__PRODUCTION__: process.env === 'production'
を定義することができますコード。
例2:次に、あなたのprocess.env
以外の__ENV__
を使用すると、少ない驚きを与えるだろうフォールバック
__ENV__: process.env || 'development'
を提供します。
また、env変数に制限されない他のものを定義することもできます。
グローバルなes6変数をenv varなしで設定したい場合があるので、環境変数と同じ名前で異なる目的を持つグローバルがある場合。
典型的なケース:
あなたが直接process.env.NODE_ENV
で、クライアント側のコードを使用することはできません。
nodejs
コードですので、
しかし、多くはクライアント側コード、特にthird-party
ライブラリです。
development
のコードは、warning
、log
などのようになります。
のような:
if(process.env.NODE_ENV === 'development') { makeWarinig(); }
しかし、生産で、あなたはbundle.js
でこれらのコードにしたくありません。したがって、library
からNODE_ENV=production
までを伝えることができます。
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()
)
}
2つのprocess.env.NODE_ENVは同じに見えますが実際は異なります。 最初のものはpackage.jsonで定義されています。それは次のようになります:
"scripts": {
"build": "NODE_ENV='production' webpack -p"
},
ノードサーバー側では、NODE_ENV = 'production'と定義されています。 Webpackではアクセスできますが、クライアント側ではアクセスできません。したがって、webpack.config.jsでは、私たちのクライアント側で使用できるように再定義する必要があります。
- 1. データ型変数と変数V2の違いは何ですか?
- 2. Volatile変数とAtomic変数の違いは何ですか?
- 3. クラス変数とグローバル変数の違いは何ですか?
- 4. 不変変数と可変変数の違いは何ですか?
- 5. Rustの不変変数とconst変数の違いは何ですか?
- 6. Rackミドルウェアの "env"変数とは何ですか?
- 7. 通常の変数とRubyのインスタンス変数との違いは何ですか?
- 8. セッション中の(Caching)変数と[格納]変数の違いは何ですか?
- 9. C#の静的変数と動的変数の違いは何ですか?
- 10. 参照変数とconstポインタ変数の違いは何ですか?
- 11. (変数).toFixed(2)と+(変数).toFixed(2)の違いは何ですか?
- 12. C#で変数を参照する変数とデータを含む変数の違いは何ですか?
- 13. Pythonのリテラルと変数の違いは何ですか?
- 14. SSIS 2012のパラメータと変数の違いは何ですか?
- 15. sparkの変換とrdd関数の違いは何ですか?
- 16. Cのポインタとグローバル変数の違いは何ですか?
- 17. ウィンドウとトップのjavascriptグローバル変数の違いは何ですか?
- 18. sassの変数とmixinの違いは何ですか?
- 19. mvcのtempdata.peek()とセッション変数の違いは何ですか?
- 20. Pentaho DIの "変数"と "フィールド"の違いは何ですか?
- 21. オブジェクトと変数の違いは何ですか?
- 22. クラス変数とクラスインスタンスの違いは何ですか?
- 23. プロパティとインスタンス変数の違いは何ですか?
- 24. グローバル変数と内部クラスの違いは何ですか?
- 25. `USER`と` USERNAME`環境変数の違いは何ですか?
- 26. current_appとgコンテキスト変数の違いは何ですか?
- 27. インスタンス変数とプロパティの違いは何ですか?
- 28. ローカル変数、インスタンス変数、グローバル変数、およびクラス変数の違いは何ですか?
- 29. ColdFusionのcfpropertyタグ定義変数と変数scope変数の違いは何ですか?
- 30. able_python_interpreter変数でenv変数を使用