使用节点包“commander”、“args”等,从 npm run 运行它时我的选项永远不会被识别

问题描述 投票:0回答:1

当使用像 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 command-line scripting command commander
1个回答
0
投票

我花了几个小时在这上面。 npm 捕获所有 - 和 -- 前缀选项,因此您的脚本将永远没有机会看到它们。奇怪的是,这似乎没有很好的记录,GitHub CoPilot、ChatGPT 和 Claude 都无法识别发生了什么。

相反,请使用 bin 选项,或者如果必须在 npm 脚本中使用非选项命令,请使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.