webpackを使ってdevelopmentとproductionで変数を変更する

TL;DR

webpackを使って開発環境と本番環境で値が違うものをどう変更するか。(ex. url)

import config from "config"

console.log(`${config.url}`)  

// 開発環境では https://hoge.com
// 本番環境では https://fuga.com

webpackのresolve.aliasを使用する

webpackのドキュメント

https://webpack.github.io/docs/configuration.html#resolve-alias

resoleve.aliasはモジュールを他のモジュールまたはパスで置き換えるもの。

webpack.config.js

const environment = process.env.NODE_ENV || 'development';

const config = {
    resolve: {
       alias: {
          config: `${__dirname}/src/js/common/config/${environment}.js`
       }
    }
};

module.exports = config;

development.js

export default {
    candidateUrl : 'http://localhost:8080'
}

staging.js

export default {
    candidateUrl : 'https://hoge.com'
}

production.js

export default {
    candidateUrl : 'http://fuga.com'
}