LoginSignup
22
16

More than 5 years have passed since last update.

webpackで環境変数をモジュールに渡す

Posted at

webpackでは本番環境用・開発環境用で処理を分けたい場合、環境変数のprocess.env.NODE_ENVを用いる。
さらにDefinePlugin 1を使うと、モジュール内にこの環境変数を渡せるようになる。

webpack.config.js
var webpack = require('webpack');

module.exports = {
  entry: {
    ...
  },
  output: {
    ...
  },
  plugins : [
    new webpack.DefinePlugin({
      NODE_ENV: JSON.stringify(process.env.NODE_ENV),
    })
  ],
};

webpackを実行する際に、NODE_ENVにパラメータを渡してやる。

NODE_ENV=development webpack

こうするとモジュール内に環境変数のNODE_ENVを渡せるので、開発環境のみ実行されるといった処理を記述できる。

if(NODE_ENV === 'development') {
  console.log('development');
}

本番環境用となるNODE_ENV=productionの場合には、ビルド時のwebpackによる静的解析により、上記の式はif(false) { ... }と解釈される。
これにUglifyJsPluginを用いるとif(false) { ... }のような必ず実行されない式の部分は省かれるので、本番環境用ビルドには上記の処理が排除されたものが出力される。


  1. 環境変数を渡すだけならEnvironmentPluginでも可能。 

22
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
16