避免命令解析器在没有参数时抱怨,只显示 helpInfo
Avoid commander parser complaining when no arguments are present and just show helpInfo
我正在从更旧版本的 commander (v2.20.3) 迁移一个包
program.command(`install [pkg]`)
.alias(`i`)
.action(installPackageOrLocal)
.option(`-S, --save`, `Save to dependencies`)
.option(`-D, --save-dev`, `Save to devDependencies`)
.option(`--production`, `Will not install modules listed in devDependencies`)
.option(`--test`, `Exit with code 1 if package limits like maxPackagesNumber or maxSizeBites exceeded`);
我希望默认设置(当调用 CLI 时不带任何参数)继续显示帮助并且不会出错,但目前它出错了:
.../npm-reflect/node_modules/.pnpm/commander@8.3.0/node_modules/commander/lib/command.js:142
const [, name, args] = nameAndArgs.match(/([^ ]+) (.)/);
我能够通过添加获得最想要的行为:
program.command('help', {isDefault: true})
.action(() => {
program.help();
})
.command(`install [pkg]`)
// ...
...但这似乎通过列出一个新的“帮助”命令来污染帮助中的内容。在不添加新命令的情况下如何避免解析器在没有参数时抱怨?
如果您有子命令但未指定子命令,最新 Commander 中的默认行为是显示帮助。这听起来像你想要的!不确定您是如何收到错误的,您可能需要打开 Commander issue 寻求帮助。
一般来说,如果您想要一些不带参数的自定义行为,那么在调用 parse()
之前检查您自己可能简单易行。例如
if (process.argv.length < 3)
program.help(); // exits
program.parse(process.argv);
我正在从更旧版本的 commander (v2.20.3) 迁移一个包
program.command(`install [pkg]`)
.alias(`i`)
.action(installPackageOrLocal)
.option(`-S, --save`, `Save to dependencies`)
.option(`-D, --save-dev`, `Save to devDependencies`)
.option(`--production`, `Will not install modules listed in devDependencies`)
.option(`--test`, `Exit with code 1 if package limits like maxPackagesNumber or maxSizeBites exceeded`);
我希望默认设置(当调用 CLI 时不带任何参数)继续显示帮助并且不会出错,但目前它出错了:
.../npm-reflect/node_modules/.pnpm/commander@8.3.0/node_modules/commander/lib/command.js:142 const [, name, args] = nameAndArgs.match(/([^ ]+) (.)/);
我能够通过添加获得最想要的行为:
program.command('help', {isDefault: true})
.action(() => {
program.help();
})
.command(`install [pkg]`)
// ...
...但这似乎通过列出一个新的“帮助”命令来污染帮助中的内容。在不添加新命令的情况下如何避免解析器在没有参数时抱怨?
如果您有子命令但未指定子命令,最新 Commander 中的默认行为是显示帮助。这听起来像你想要的!不确定您是如何收到错误的,您可能需要打开 Commander issue 寻求帮助。
一般来说,如果您想要一些不带参数的自定义行为,那么在调用
parse()
之前检查您自己可能简单易行。例如
if (process.argv.length < 3)
program.help(); // exits
program.parse(process.argv);