问题

在公司项目的package.json文件中有个scripts命令:npm run component:add,在命令行输入npm run component:add -g aa -n bb -d cc后,显示的命令变成了node ./packages/scripts component:add aa bb ccc-都不见了,甚至报错了

解决

  • 这里需要用到--,将参数传递给实际的命令
npm run component:add -- -g aa -n bb -d cc

npm scripts中,--的作用是告诉npm,之后的参数应该传递给运行的脚本,而不是npm自身。当运行npm run script-name -- arg1 arg2时,--之后的参数会被传递给script-name对应的脚本。

这是因为npm在运行脚本时,它会收集所有在npm run命令之后的参数,并将它们传递给实际执行的命令。但是,如果实际执行的命令也以-开头,npm可能会尝试解析这些参数,而不将它们传递给运行的脚本。

通过使用--,将告诉npm停止解析参数,并将其余的参数传递给脚本。这样,你就可以确保你的脚本正确地接收到所有的参数。