无法与Commanderjs争论

时间:2018-06-01 18:37:48

标签: node.js node-commander

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

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时,它返回未定义。我做错了什么?

1 个答案:

答案 0 :(得分:1)

运行以下内容:

$ 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);

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