webpackで環境依存変数を渡す 質問する

webpackで環境依存変数を渡す 質問する

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',
    ...
};

おすすめ記事