在 CLI Commander Js 操作中访问选项变量

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

我对创建 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();
    }
  })();
});

不确定这是否是我应该做的事情,任何帮助将不胜感激。

typescript command-line-interface ts-node node-commander
2个回答
0
投票

操作处理程序传递命令参数和命令选项以及命令本身。在这个简单的操作处理程序示例中,只有选项,没有命令参数(位置参数)。

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 的维护者。)


0
投票

一个

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 }
© www.soinside.com 2019 - 2024. All rights reserved.