2

Webpack v4 引入了两组默认值:productiondevelopment. 我的问题是:有没有办法引用配置文件中的那些?我知道我仍然可以将环境变量传递为:

--env.NODE_ENV=development

通过这样做,我有两个独立的环境变量,这感觉不对。另一种选择显然是引用不同的配置文件,这看起来也不是简单配置的最佳解决方案。

我在这里错过了什么吗?

4

2 回答 2

8

在webpack github issue中找到了更好的方法。由于 webpack 2 您可以在 中导出函数webpack.config.js,解析后的argv内容将传递给该函数。

对于 webpack 4,您可以编写如下配置:

// webpack.config.js
module.exports = (env, argv) => {
    console.log(argv.mode);
    return { /* your config object */ };
};

// $webpack-cli --mode development
// development

原答案:

您可以使用一些库minimist来解析 cli 传递的参数:

// webpack.config.js
const args = require('minimist')(process.argv.slice(2));
console.log(args.mode);

// $webpack-cli --mode development
// development
于 2018-03-19T06:06:43.823 回答
0

我刚刚构建了这个简单的 NPM 包,用于导入当前的 Webpack 4 模式:https ://github.com/mckomo/webpack-mode 。以下是如何使用它:

// webpack.config.js
const { isProduction } = require('webpack-mode');

console.log(isProduction); // => true

// ... rest of the config

它的工作原理非常简单,只需读取过程参数以确定参数的值mode。默认情况下webpack-mode.isProduction会返回true(Webpack 4 的原始行为)。

于 2018-04-05T14:26:39.387 回答