如何同时使用webpack配置类型承诺和环境功能

时间:2017-05-22 17:26:02

标签: configuration promise environment-variables username webpack-2

我需要在webpack配置中使用一个库来获取进行构建的个人的用户名。我正在使用异步的npm 'username'包,并在获取用户名时返回一个承诺。

  

const username = require('username');

     

username()。then(username => {});

webpack documentation描述了一种返回承诺的配置

  

module.exports =()=> {     返回新的承诺((解决,拒绝)=> {})}

和另一种使用CLI命令行中的环境变量的配置

  

module.exports = function(env){}

,但不是如何将两者结合使用。

我需要能够从命令行读入CLI中设置的环境变量--env=prod,如下所示:package.json

  "scripts": {
    "start": "webpack-dev-server --env=local --port=4200 --history-api-fallback",
    "build": "webpack",
    "build-dev": "rimraf dist && webpack --env=dev --colors --bail",
    "build-prod": "rimraf dist && webpack -p --env=prod --colors --bail",
    "test": "karma start ./karma.conf.js"
  },

1 个答案:

答案 0 :(得分:0)

经过一些试验和错误,我发现可以结合两种配置文件技术,你可以将导出设置为给你环境变量的函数,然后这个函数可以返回一个promise本身,并且承诺可以返回配置。

通过这种方式,您可以在webpack的配置中获得promise和环境变量的结果。

module.exports = function(env) {
  console.log(`Building target environment: ${env}`);

  return username().then(username => {
      return {
      "devtool": "source-map",
        // ... original config here
      };
  });
};