首页 > 解决方案 > 节点:从 npm 脚本访问命令行参数并从脚本中使用它们

问题描述

我想在我的 package.json 中定义以下脚本

scripts: {
  "filter": "npm run jest -- -t $1",
  "jest": "jest",
  [...]

这个想法是我可以跑去npm run filter -- my-filter执行npm run jest -- -t my-filter

如果我运行:

npm run filter -- pattern
-->
npm run jest -- -t $1 "pattern"

$1 是字面的。如果我在我的脚本中取消 $1 它可以正常工作,看起来 npm 在句末传递了所有参数。我只想知道如何使用单个参数

标签: node.jsnpmnpm-scripts

解决方案


你可以这样做。

npm run <command> [-- <args>]

例如 :-

"scripts": {
    "server": "node server.js"
}

那么以下命令将是等效的:

node server.js --port=1337 => npm run server -- --port=1337

另一个简单的例子,

{
  "print": "f(){ echo Hello $1! && echo Bye $2! ;};f",
  "test": "npm run print -- world stranger"
}

你得到:

$ npm test -s # -s is to suppress npm messages for this example
Hello world!
Bye stranger!

希望这段代码可以帮助您理解和解决您的问题。


推荐阅读