我如何在 webpack.config 文件中使用变量?

How do i use a variable in my webpack.config file?

我正在使用 webpack 2.2.1。

我想在命令行上定义一个变量,然后在我的构建配置中使用该变量。

所以给一个 webpack 命令行,看起来像(或任何它需要的):

webpack "--output-path=..." "--env.wibble=NOMF"

我怎样才能写这样的东西:

... 

const config = {
  entry: {
    ...
  },
  output: {
    ...
  },

  plugins: [
    ...
    new CopyWebpackPlugin([{
      from: '/somepath/' + env.wibble,
      to: 'something.js'
    }]),    
    ...
  ],

};

module.exports = config;

如何在构建中定义和使用变量?

我故意不在这里使用 NODE_ENV(如果可以的话)。

--env 选项用于将定义的属性传递给 webpack 配置,但要使其工作,您需要导出一个 return 配置对象的函数,而不是对象本身.

您的配置为:

module.exports = function(env) {
  const config = {
    entry: {
      // ...
    },
    output: {
      // ...
    },
    plugins: [
      new CopyWebpackPlugin([{
        from: '/somepath/' + env.wibble,
        to: 'something.js'
      }]),    
    ],
  };
  return config;
};

您可以通过使用箭头函数隐式 return 对象来缩短它:

module.exports = env => ({
  entry: {
    // ...
  },
  output: {
    // ...
  },
  plugins: [
    new CopyWebpackPlugin([{
      from: '/somepath/' + env.wibble,
      to: 'something.js'
    }]),    
  ],
});

另见 Exporting a function to use --env