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



注意:这不是将参数发送给顶级脚本,而是发送给调用的脚本脚本

在我的包里。当我调用一个直接接受命令行参数的脚本时,它可以工作。但是当我调用调用另一个脚本的脚本时,它并没有传递命令行参数给它。我怎样通过考试?

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

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

npm run takes-args -- -env dev

但是当我在另一个脚本中运行它时,它从来没有得到参数。有什么方法可以传递下去吗?比如美元符号之类的可变标记?

//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 dev时,npm run运行npm run takes-args -- -env dev。成功!

如果你不传递任何参数给calls-takes-args,后面的--也不会有影响。


编辑:

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

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

这将运行somemodule -env dev

最新更新