我对创建 CLI 应用程序还很陌生。我为此使用 ts-node 和 Commander,但是我正在努力弄清楚如何访问用户在命令操作中传入的选项。
program
.version(version)
.name(name)
.option('-sm, --something', 'does something', false)
.description(description);
program.command('clear-envirorment').action(() => {
/// want to be able to see the passed in usage options here
if (options.contains('-sm')) {
// do something
}
(async () => {
const userFeedback = await getPromptAnswers(CLEAR_ENV_QUESTIONS);
if (userFeedback?.deleteAll) {
cleanEnvirorment();
}
})();
});
不确定这是否是我应该做的事情,任何帮助将不胜感激。
操作处理程序传递命令参数和命令选项以及命令本身。在这个简单的操作处理程序示例中,只有选项,没有命令参数(位置参数)。
const { Command } = require('commander');
const program = new Command();
program
.description('An application for pizza ordering')
.option('-p, --peppers', 'Add peppers')
.option('-c, --cheese <type>', 'Add the specified type of cheese', 'marble')
.option('-C, --no-cheese', 'You do not want any cheese')
.action(options => {
console.log(options);
})
program.parse();
$ node index.js -p -c cheddar
{ cheese: 'cheddar', peppers: true }
(免责声明:我是 Commander 的维护者。)
一个
options
对象(TypeScript 的类型为 any
)被附加为操作的最后一个参数。例如,在:
program
.command('test <arg1> <arg2>')
.option('-c, --count', 'Return a count')
.option('-v, --verbose', 'Be verbose')
.action((arg1, arg2, options) => {
console.log(arg1, arg2, options)
})
以下命令
npm run cli test stack overflow -- --verbose --count
将产生以下输出:
stack overflow { verbose: true, count: true }