Angular アプリを gulp から webpack に変換しようとしています。gulp では、gulp-preprocess を使用して、NODE_ENV に応じて HTML ページ内のいくつかの変数 (データベース名など) を置き換えます。webpack で同様の結果を得るには、どのような方法が最適ですか?
ベストアンサー1
これを実現するには、基本的に 2 つの方法があります。
プラグインの定義
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),
これは、一致したものを「そのまま」置き換えるだけであることに注意してください。文字列がこのような形式になっているのはそのためです。オブジェクトなどのより複雑な構造にすることもできますが、その考え方は理解できます。
環境プラグイン
new webpack.EnvironmentPlugin(['NODE_ENV'])
EnvironmentPlugin
内部的に使用しDefinePlugin
、それを介して環境値をコードにマッピングします。簡潔な構文です。
エイリアス
あるいは、設定を次のように利用することもできます。エイリアスモジュール消費者側から見ると次のようになります。
var config = require('config');
構成自体は次のようになります。
resolve: {
alias: {
config: path.join(__dirname, 'config', process.env.NODE_ENV)
}
}
process.env.NODE_ENV
が だとしますdevelopment
。これは にマップされます./config/development.js
。マップ先のモジュールは、次のように構成をエクスポートできます。
module.exports = {
testing: 'something',
...
};