Webpack 使用标志 运行 不同的脚本

Webpack using flags to run different script

我的 package.json 中有一些脚本用于基于位置的脚本(这是加拿大版本)。

"dev-ca": "npm run development-ca",
"development-ca": "cross-env process.env.location=us NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"

这工作正常,但我必须 运行

npm run dev-ca

我宁愿运行

npm run dev --ca

这可能吗?我仍然想 运行 我的标准 npm 运行 dev 用于我的本地(英国)站点。

要将标志传递给 npm 脚本(而不是 npm run 本身),请在最后的 -- 之后传递它们,如下所示:

npm run dev -- --ca

那么在您的构建中选择标志的粗略解决方案是:

// somewhere in your config file
const argv = process.argv.join('');
let location = 'uk'; // default to UK
for (const flag of ['ca', /* other locations... */]) {
  if (argv.includes(`--${flag}`)) {
    location = flag;
  }
}

对此的改进是使用标志解析​​器,例如minimist,尤其是当你传递了不止一个标志时。