当使用像 Commander 这样的 args 处理器时,我可以获得参数,但如果我为其编写脚本,则不能获得选项。
package.json...
{
"name": "example",
"version": "0.0.1",
"description": "This app's CLI is going to have problems",
"main": "src/app.js",
"scripts": {
"serve": "node src/app.js",
"command": "node src/cli.js",
},
"dependencies": {
"commander": "^12.1.0"
},
}
...如果我运行
npm run command foo
,效果很好; src/cli.js 将 foo 作为参数传递。但是,如果我运行 npm run command foo --force
; --force 选项永远不会被传递。
我花了几个小时在这上面。 npm 捕获所有 - 和 -- 前缀选项,因此您的脚本将永远没有机会看到它们。奇怪的是,这似乎没有很好的记录,GitHub CoPilot、ChatGPT 和 Claude 都无法识别发生了什么。
相反,请使用 bin 选项,或者如果必须在 npm 脚本中使用非选项命令,请使用它们。