NodeJS 命令行工具评测:meow, commander, yargs

meow

优点是简单,结构化设计得好:

flags: {
  headless: {
    type: ‘boolean’,
    default: false
    },
}

但问题是不支持自动生成 help 内容,你还得自己手动写……

commander

首先它支持自动生成 help 信息。
类似于 python 的 argparse,定义参数主要是通过方法的调用:

program.version('0.1.0').
  option('--video [file path]', 'video file').
  option('-u, --username ', 'specify username').  parse(process.argv)

它有一套约定,比如尖括号<> 代表 required,方括号[]代表 optional
但是,它这个 required 其实是不做检查的……也就是说你得自己写代码去检查用户到底有没有传那个参数,也是很蛋疼。

yargs

因为上一个问题,我在 commander 的 issue 中看到别人推荐了这个。
首先,它的定义比较复杂,或者说有点绕。
你很难在一次方法调用中定义好一个参数的所有属性,比如:

var argv = require('yargs').
  describe('video', 'specify video file').
  describe('u', 'specify username').alias('u', 'username').
  describe('p', 'specify password').alias('p', 'password').
  demandOption(['u', 'p', 'video']).argv  // 这里定义 required

但好处是它不像前面几位,总是少了某个重要功能,至少是样样都有吧。虽然复杂了点,但也可以接受。

你可能感兴趣的:(NodeJS 命令行工具评测:meow, commander, yargs)