npm8中文文档
当通过 npx
二进制文件运行时,所有标志和选项必须在任何位置参数之前设置。通过 npm exec
运行时,可以使用双连字符 --
标志来禁止 npm 解析应发送到执行命令的开关和选项。
例如:
$ npx foo@latest bar --package=@npmcli/foo
在这种情况下,npm 将解析 foo
包名,并运行以下命令:
$ foo bar --package=@npmcli/foo
由于 --package
选项位于位置参数之后,因此它被视为已执行命令的参数。
相比之下,由于 npm 的参数解析逻辑,运行这个命令是不同的:
$ npm exec foo@latest bar --package=@npmcli/foo
在这种情况下,npm 会先解析 --package
选项,解析 @npmcli/foo
包。然后,它将在该上下文中执行以下命令:
$ foo@latest bar
建议使用双连字符来明确告诉 npm 停止解析命令行选项和开关。因此,以下命令等同于上面的 npx
命令:
$ npm exec -- foo@latest bar --package=@npmcli/foo