node cli 开发 (command line interface)

开发 node cli 的核心是依赖 node process 来获取所输入进命令行的参数,根据参数来执行任务。
例子

// 新建一个cli.js 文件写入如下代码
// 写的文件头部加`#!/usr/bin/env node`,用于动态检测出不同用户各自的 node 路径并执行
#!/usr/bin/env node
console.log(process.argv)

在terminal中执行如下命令

node cli.js name age place
// 输出显示如下结果
[ '/usr/local/bin/node',
  '/your_programs/cli.js',
  'name',
  'age',
  'place' ]

从上面结果可以看出来返回一个数组。
数组第一个字符串含义为 node 命令所在的目录;
数组第二个字符串含义为执行文件所在的目录;
之后的字符串为在命令行输入的参数。

以上为获取参数方法,下面让我们看看如何封装自定义命令
很简单,在package.json文件中增加 key 为 bin 的值。
例子

{
  "name": "cli-exercise",
  "bin": {
    "cli": "dist/index.js"
  }
}

bin 的值可以为key-value形式,也可以是字符串。
当为key-value形式的时候,key为自定义的命令,value为输入命令后执行的文件。
当为字符串的时候,则只代表执行的文件,自定义命令则为package.jsonkeyname的值。

做完这些我们如何在本地测试呢?
在项目目录下执行
npm link
执行cli name age place
输出如下结果

[ '/usr/local/bin/node',
  '/your_programs/cli.js',
  'name',
  'age',
  'place' ]

最后一步:
上传到npm上我们就可以全局安装使用了。

以上我们就完成了 node cli 简单的工具开发。

示例项目:
cli-exercise
GitHub npm