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

Posted

技术标签:

【中文标题】如何传播 npm 脚本命令行参数?【英文标题】:How to propagate npm script command line arguments? 【发布时间】:2017-08-19 07:35:03 【问题描述】:

我的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 不会传播到./node_modules/.bin/standard。这是我得到的输出。

bash-3.2$ npm run lint:fix > project@0.0.1 lint:修复 /path/to/my/project > npm 运行 lint -- --fix > project@0.0.1 lint /path/to/my/project > npm 运行标准“--fix” > project@0.0.1 标准 /path/to/my/project > 标准 标准:使用 javascript 标准样式 (http://standardjs.com) 标准:运行 `standard --fix` 自动修复一些问题。 /path/to/my/project/data/someFile.js:38:34:额外的分号。 npm 错误!达尔文 16.0.0 npm 错误! argv “/usr/local/bin/node” “/usr/local/bin/npm” “运行” “标准” “--fix” npm 错误!节点 v6.9.4 npm 错误! npm v3.10.10 npm 错误!代码生命周期

这里有一个错误,因为--fix 参数没有正确传播。

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

【问题讨论】:

【参考方案1】:

嗯,这是我在这个问题上大汗淋漓之后发现的。 (不过,这很愚蠢)。

错误不是因为参数没有传播而引起的。相反,这是因为standard 中的--fix 标志在linting 期间不会自动修复分号问题。

在给定的一组脚本中(在问题中)。论据成功传播。因此,这就是将参数传播到***脚本的方式。

【讨论】:

【参考方案2】:

您的 npm 脚本中不应该需要双 -- --

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

【讨论】:

嗨@edwarddamato,我认为需要双倍-- --。因为,第一组连字符是 npm script 命令和参数(需要传递给脚本)之间的分隔符,而第二组是参数本身。

以上是关于如何传播 npm 脚本命令行参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有前导斜杠的参数传递给 npm 脚本

将参数传递给npm运行脚本

如何获取PHP命令行参数

在 Eclipse(Pydev) 中将命令行参数传递给 Python 脚本

如何在 Bash 中更改命令行参数?

如何在 PowerShell 中要求命令行参数(不是参数)?