https://github.com/tj/commander.js
    基本使用

    1. # fisd init --fe
    2. program
    3. .command('init')
    4. .description('安装开发环境')
    5. .option('-f,--fe', 'FE同学特需的本地开发调试能力')
    6. .action(function(option){
    7. // option.fe // 如果 fisd init --fe 则 option.fe=true
    8. });
    9. .on('--help', function() {
    10. //针对 fisd init --help 打印一些 帮助指南
    11. })
    12. # fisd release orp --remote=''
    13. program
    14. .command('release [env]') // release后表示接受的参数 []可选 <>必选
    15. .description('安装开发环境')
    16. # <> 表示 fisd release orp --remote='' 必须要跟上参数 --remote
    17. .option('-R,--remote <url>', '远程机器url', 'xxxx.php') 第三个参数表述默认
    18. .action(function(env, option){
    19. // env = orp
    20. // option.remote
    21. });
    22. .on('--help', function() {
    23. //针对 fisd init --help 打印一些 帮助指南
    24. })

    命令解析 program.parse(process.argv);
    program.parse(arguments)会处理参数,没有被使用的选项会被存放在program.args数组中。

    command
    针对命令的操作,可以action绑定回调。可以单独写成可执行文件

    1. // 通过绑定操作处理程序实现命令 (这里description的定义和 `.command` 是分开的)
    2. // 返回新生成的命令(即该子命令)以供继续配置
    3. program
    4. .command('clone <source> [destination]')
    5. .description('clone a repository into a newly created directory')
    6. .action((source, destination) => {
    7. console.log('clone command called');
    8. });
    9. // 通过单独分离的可执行文件实现命令 (注意这里description是作为 `.command` 的第二个参数)
    10. // 返回最顶层的命令以供继续添加子命令
    11. program
    12. .command('start <service>', 'start named service')
    13. .command('stop [service]', 'stop named service, or all if no name supplied');

    .command() 带有描述参数时,不能采用 .action(callback) 来处理子命令

    未知命令

    1. program
    2. .command('*')
    3. .action(function(env){
    4. console.log('deploying "%s"', env);
    5. })

    命令行信息输出
    .name(“my-command”)
    .usage(“[global options] command”)

    1. program
    2. .name("my-command")
    3. .usage("[global options] command")
    4. ===>
    5. Usage: my-command [global options] command

    .outputHelp(cb)

    输出帮助信息的同时不退出