1

我的应用程序有两个版本,一个是我设置的 --extended,另一个不是,像这样

"scripts": {
    "build": "webpack --mode production",
    "extended": "webpack --mode production --extended",
    // ...
 }

现在,在我的 webpack 中,我像这样访问扩展

module.exports = (_env,argv)=> {
   argv.extended
}

我正在尝试以跨平台的方式改进这一点,以做类似的事情

"scripts": {
    "build": "webpack --mode production",
    "extended": "--extended npm run build"       
  }

至于运行build脚本,extended但仍然可以访问--extended变量。

我有办法做到这一点吗?谢谢

我读了整个问题How to set environment variables from inside package.json但找不到方法

4

1 回答 1

1

将package.jsonscripts的部分更改为以下内容:

"scripts": {
  "build": "webpack --mode production",
  "extended": "npm run build -- --extended"
}

解释:

npm-run-script可在此处找到的文档中所述:

...特殊选项--用于getopt分隔选项的结尾。npm 会将所有参数--直接传递给您的脚本:

因此,基本上当您通过 CLI 运行以下命令时:

$ npm run extended

npm 调用extended脚本,然后运行build脚本并将--extended参数传递到它的末尾(即它传递--extendedbuild脚本的末尾)。


还有其他方法吗?

是的,您还可以考虑通过完全删除脚本来进一步简化package.jsonscripts的部分。extended

例如:

"scripts": {
  "build": "webpack --mode production"
}

然后,您可以执行以下任一操作:

  1. 通过 CLI 运行以下命令:

    $ npm run build
    

    这将在没有参数/选项的情况下调用您的build脚本。--extended

  2. 或者通过 CLI 运行以下命令:

    $ npm run build -- --extended
    

    这将使用参数/选项调用您的build脚本。--extended

于 2019-10-31T14:01:34.237 回答