美文网首页Node.js
NodeJs Shell(上)

NodeJs Shell(上)

作者: 卖梦想的男孩 | 来源:发表于2016-10-14 16:13 被阅读751次

    1. 简单脚本

    • 新建一脚本文件gk
    #!/usr/bin/env node
    console.log('hi,kerison');
    
    • 修改文件权限 (添加可读写可执行)
    chmod 755 gk
    
    • 运行,在当前目录下,终端中输入:./gk
    hi,kerison
    
    • 为了更方便运行,可讲程序连接到系统可执行明明下
    • 当前目录下新建package.json
    {
      "name": "gk",
      "bin": {
        "gk": "gk"
      }
    }
    
    • 执行npm link
    • 现在终端中而已直接输入:gk

    2. 脚本扩展一(获取命令行的参数)

    脚本中的命令参数可以从process.argv中存取

    • 修改gk
    console.log('gk', process.argv)
    
    • 执行 gk hello
    gk [ '/Users/kerison/.nvm/versions/node/v5.11.1/bin/node',
      '/Users/kerison/.nvm/versions/node/v5.11.1/bin/gk',
      'hello' ]
    

    分析:可以看出process.argv是一个命令的数组,第一个是node命令,第二个是当前程序,后续的是依次传入的参数

    • 优化参数(yargs)
    • 安装yargs
    npm install --save yargs
    
    • 修改gk
    #!/usr/bin/env node
    var argv = require('yargs').argv;
    console.log('gk ', argv);
    
    • 执行gk -n x --name kerison other
    gk { _: [ 'other' ], n: 'x', name: 'kerison', '$0': 'gk' }
    
    • 分析
      可以看出,参数已经被解析成一个对象,$0为命令,除了- 或者 --的参数外,其他匿名参数会被放入一个_的匿名数组中。

    • 参数配置

    • 修改 gk

    #!/usr/bin/env node
    var argv = require('yargs')
    .option('v', {
        alias: 'version',
        demand: true,
        default: '0.0.1',
        describe: 'version name',
        type: 'string'
    })
    .option('h', {
        alias: 'help',
        demand: true,
        describe: 'need help',
    })
    .argv;
    console.log('gk ', argv);
    
    • 运行gk
    选项:
      -v, --version  version name                  [字符串] [必需] [默认值: "0.0.1"]
      -h, --help     need help                                                [必需]
    缺少必须的选项:h
    
    • 分析:
      • option:命令配置
      • alias:命令别名
      • demand: 命令是否是必选
      • describe:命令描述
      • type:命令参数类型
      • default:参数默认值
    • 命令帮助信息
    • 修改文件
    #!/usr/bin/env node
    var argv = require('yargs')
    .usage('Usage: gk [options]')
       .example('gk -v ', 'somthing')
       .help('h')
       .epilog('copyright 2016')
    .argv;
    
    • 执行gk -h
    Usage: gk [options]
    选项:
      -h  显示帮助信息                                                        [布尔]
    示例:
      gk -v   somthing
    copyright 2016
    
    • 分析:
      • usage:用法格式
      • example:提供例子
      • help:显示帮助信息
      • epilog:出现在帮助信息的结尾
    • 子命令
    • 修改文件
    #!/usr/bin/env node
    var argv = require('yargs')
    .command("sub", "sub description ", function(yargs) {
        console.log("sub ...");
    })
    .usage('Usage: gk [options]')
    .example('gk -v ', 'somthing')
    .help('h')
    .epilog('copyright 2016')
    .argv;
    
    • 执行gk-h
    Usage: gk [options]
    命令:
      sub  sub description
    选项:
      -h  显示帮助信息                                                        [布尔]
    示例:
      gk -v   somthing
    copyright 2016
    
    • 分析:
      comand可构建二级命令
      • 第一个参数是命令名
      • 第二个参数是命令描述
      • 第三个是用来接受yargs,可解析传入的参数

    相关文章

      网友评论

        本文标题:NodeJs Shell(上)

        本文链接:https://www.haomeiwen.com/subject/gxiwyttx.html