如何传播npm脚本命令行参数?

时间:2017-03-26 17:25:28

标签: javascript node.js npm npm-scripts

我的main以这种方式定义的脚本很少。

package.json

当我执行{ "name": "project", "scripts": { "standard": "./node_modules/.bin/standard", "lint": "npm run standard", "lint:fix": "npm run lint -- --fix" } } 时,我发现参数$ npm run lint:fix不会传播到--fix。这是我得到的输出。

bash-3.2$ npm run lint:fix

> project@0.0.1 lint:fix /path/to/my/project
> npm run lint -- --fix

> project@0.0.1 lint /path/to/my/project
> npm run standard "--fix"

> project@0.0.1 standard /path/to/my/project
> standard

standard: Use JavaScript Standard Style (http://standardjs.com)
standard: Run `standard --fix` to automatically fix some problems.
  /path/to/my/project/data/someFile.js:38:34: Extra semicolon.

npm ERR! Darwin 16.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "standard" "--fix"
npm ERR! node v6.9.4
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE

这里出现错误,因为./node_modules/.bin/standard参数没有正确传播。

好吧,我的问题不在于linting或standardJs。我想知道如何正确传播参数直到顶级脚本。

2 个答案:

答案 0 :(得分:0)

嗯,这就是我在这个问题上出汗后发现的。 (虽然这很愚蠢。)

引起错误不是因为参数没有传播。相反,这是因为standard中的x = y * z 标记在linting期间不会自动修复分号问题。

在给定的脚本集中(在问题中)。论证成功传播。因此,这是将参数传播到顶级脚本的方式。

答案 1 :(得分:-1)

你的npm脚本中不需要加倍-- --

您的lint:fix脚本应为:"npm run lint --fix"