如何将命令行参数传递给嵌套脚本?

时间:2016-11-08 19:41:37

标签: javascript node.js npm node-modules npm-scripts

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

在我的package.json中,当我调用一个直接接受命令行args的脚本时,它可以工作。但是当我调用一个调用其他脚本的脚本时,它并没有将命令行args传递给它。我如何通过它们?

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

当我运行以下命令时,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

有什么办法吗?

1 个答案:

答案 0 :(得分:5)

您的context = this; /*here 'this' refers to your activity's context*/ 字段应如下所示:

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 dev会运行npm run。成功了!

如果你没有将任何参数传递给npm run takes-args -- -env dev,则跟踪calls-takes-args不会受到伤害。

编辑:

如果您不想/不想修改--,则可以运行

package.json

这将运行npm run calls-takes-args -- -- -env dev