美文网首页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