无法与 Commanderjs 争论

Cannot get argument with Commanderjs

我正在尝试通过节点传递命令行参数,如下所示:npm start -s config.yml,其中 npm start 映射到我的 package.json.[=18 中的 node app.js =]

app.js如下:

const program = require('commander');

console.log(process.argv);

program
    .command('-s, --shell <value>', '.yml config file')
    .parse(process.argv);

console.log(program.shell);

参数正在通过 process.argv 传递,但是当我记录 program.shell 时它返回未定义。我做错了什么?

运行 以下:

$ node runme.js shell aceofspades

在以下文件中:

// FILE: runme.js
const program = require('commander');

program
  .command('shell [value]', '.yml config file')
  .action((cmd, opt) => {
    console.log('cmd:', cmd);   // shell
    console.log('opt:', opt);   // aceofspades
  });

program.parse(process.argv);

给我命令和命令的操作函数中的参数。