4

注意:这不是关于将 args 发送到顶级脚本,而是发送到该脚本调用脚本

在我的 package.json 中,当我调用一个直接采用命令行参数的脚本时,它可以工作。但是当我调用一个调用另一个脚本的脚本时,它不会将命令行参数传递给它。我如何通过它们?

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args"
}

当我运行以下命令时,参数通过:

npm run takes-args -- -env dev

但是当我通过另一个脚本运行它时,它永远不会得到 args。有没有办法把它们传下去?也许通过像美元符号这样的可变标记?

//The top-level script gets the args, BUT takes-args does NOT
npm run calls-takes-args -- -env dev

有什么办法吗?

4

1 回答 1

9

您的scripts字段应如下所示:

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args --"
}

注意--末尾的calls-takes-args

之后传递的任何内容都会--直接附加到您正在运行的脚本上。当你跑的时候npm run calls-takes-args -- -env dev,就相当于跑了npm run takes-args -env dev。当然,这是行不通的。

如果添加--calls-takes-args,当你运行时npm run calls-takes-args -- -env devnpm run运行npm run takes-args -- -env dev. 成功!

如果您不将任何参数传递给calls-takes-args,则尾随--不会受到伤害。


编辑:

如果你不能/不想修改你的package.json,你可以运行

npm run calls-takes-args -- -- -env dev

那将运行somemodule -env dev

于 2016-11-09T14:01:17.323 回答