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