如何将命令行parameter passing给嵌套的脚本?

注意:这不是关于将参数发送到顶层脚本,而是发送到该脚本所调用的脚本

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

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

当我运行下面的命令,参数来通过:

 npm run takes-args -- -env dev 

但是当我通过另一个脚本运行它时,它从来没有得到参数。 有什么办法让他们失望? 也许通过一个像美元符号的variables标记?

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

有什么办法吗?

您的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 runs npm run takes-args -- -env dev 。 成功!

如果你没有把任何parameter passing给calls-takes-args ,那么拖尾--不会受到伤害。


编辑:

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

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

这将运行somemodule -env dev