Webpack v4 — 如何访问 'mode' 选项值
Webpack v4 — how to access 'mode' option value
Webpack v4 引入了两组默认值:production
和 development
。我的问题是:有没有办法引用配置文件中的内容?我知道我仍然可以将环境变量传递为:
--env.NODE_ENV=development
通过这样做,我有两个独立的环境变量,这感觉不对。另一种选择显然是引用不同的配置文件,这看起来也不是简单配置的最佳解决方案。
我是不是漏掉了什么?
在 a 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
我刚刚构建了这个用于导入当前 Webpack 4 模式的简单 NPM 包: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
将 return true
(Webpack 4 的原始行为)。
Webpack v4 引入了两组默认值:production
和 development
。我的问题是:有没有办法引用配置文件中的内容?我知道我仍然可以将环境变量传递为:
--env.NODE_ENV=development
通过这样做,我有两个独立的环境变量,这感觉不对。另一种选择显然是引用不同的配置文件,这看起来也不是简单配置的最佳解决方案。
我是不是漏掉了什么?
在 a 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
我刚刚构建了这个用于导入当前 Webpack 4 模式的简单 NPM 包: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
将 return true
(Webpack 4 的原始行为)。