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 <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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容