跳转到内容
aswind7
GitHub
Blog

commander.js使用

手动使用argv

//test.js
console.log(process.argv)

//terminal
node test.js a=1 -b --bob --tom=1
// 输出:
[ '/usr/local/bin/node',
  '/Users/aswind7/Desktop/wqw/test.js',
  'a=1',
  '-b',
  '--bob',
  '--tom=1' ]

要想获取参数的话很麻烦, 需要process.argv.slice(2)之后再对参数进行解析才能取到值

commander

基础使用

const commander = require("commander")

commander
  .option("-b, --big", "is big")
  .option("-a, --add", "is add")
  .parse(process.argv)

const isBig = commander.big
const isAdd = commander.add
console.log(isBig, isAdd)

//terminal
aswind7deMacBook-Pro:wqw aswind7$ node cm.js -b -a  (或者node cm.js -b --add)
//输出
true true

option有值

const commander = require("commander")

commander
  .option("-b, --big", "is big")
  // 指定有默认值, 为'cake'
  .option("-a, --add [type]", "add sth", 'cake')
  .parse(process.argv)

const isBig = commander.big
const addType = commander.add
console.log(isBig, addType)
//terminal 注意:--add pear === --add 'pear' === --add=pear === -a pear
// 而 -a=peer在命令行中的写法是错误的
aswind7deMacBook-Pro:wqw aswind7$ node cm.js -b --add pear
true 'pear'
//terminal 
aswind7deMacBook-Pro:wqw aswind7$ node cm.js -b --add=apple
true 'apple'
//terminal 不写,则有默认值
aswind7deMacBook-Pro:wqw aswind7$ node cm.js -b --add
true 'cake'

指定了命令

一般用于特定指令, 如果写了action回调并且传了多余的 option 比如: -f -other 这样,就会提示报错.

var program = require('commander');

program
  .command('rm <dir>')  //<dir>此处的尖括号等同于 '[]', 只是为了好辨别而已
  .option('-r, --recursive', 'Remove recursively')
  .action(function (dir, cmd) {
    console.log('remove ' + dir + (cmd.recursive ? ' recursively' : ''))
  })

program.parse(process.argv)
// terminal  
aswind7deMacBook-Pro:wqw aswind7$ node file.js rm foo -r
remove foo recursively

杂文

 $ npm install -g cnpm --registry=https://registry.npm.taobao.org 与
 $ npm install -g cnpm --registry https://registry.npm.taobao.org 是相同的。

 nrm -h  与 nrm --help 是相同的。

 // commander也可以写成如下 但一般很少这样干:
 .option("a, --add [type]", "is add", 'cake')
 //terminal 
 aswind7deMacBook-Pro:wqw aswind7$ node cm.js a mike
 'mike'
Tags: