0

在我的 package.json 中,我有这些脚本:

"scripts": {
    "do-build": "ENV=DEV node ./src/setEnvironment.js",
    "do-build:prod": "ENV=PROD node ./src/setEnvironment.js",
    "do-build:dev": "ENV=DEV node ./src/setEnvironment.js"
  }

所以,我假设当我运行npm run do-build它时它会运行"do-build": "ENV=DEV node ./src/setEnvironment.js",当它运行时npm run do-build --prod它会执行"do-build:prod": "ENV=PROD node ./src/setEnvironment.js",但它总是执行默认的do-build script( "do-build": "ENV=DEV node ./src/setEnvironment.js")。我不确定为什么会这样?

4

2 回答 2

1

npm 不支持影响应该执行哪个脚本的 CLI 参数。因此npm run do-build:prod将执行生产构建任务。

于 2016-10-11T14:00:35.593 回答
0

这不是 npm 脚本的工作方式。如果你想运行 do-build:prod 你必须这样做:npm run do-build:prod

如果你愿意,你的 npm 脚本可以接受参数,例如,如果你有这个:

  "scripts": {
    "foo": "echo $1"
  }

您可以像这样运行它:npm run foo bar您的脚本将接收 bar 作为第一个命令行参数。

为了对命令行选项有更丰富的支持,我建议您研究更丰富的任务运行器,例如 gulp 或 grunt,而不是使用 npm 脚本。

于 2016-10-11T14:01:56.150 回答