XXHolic / segment

some notes
MIT License
28 stars 4 forks source link

Node Command-line utility #46

Open XXHolic opened 5 years ago

XXHolic commented 5 years ago

引子

Node 遍历文件 中脚本的使用并不方便,解决的方法也很容易想到,在使用一些全局包的时候,可以执行一些特定的命令,例如 npmnrm。类似的,可以把自己需要的一些脚本弄成一个单独包,基于 Node 将自定义的命令添加到全局使用,也就是 Node 命令行工具的开发。

实现方式

首先是用到了 package.json 中的 bin 字段,这个字段是命令名称和本地文件的映射,当安装时,npm 会把这个文件链接到全局的 prefix/bin 或者本地的 ./node_modules/.bin/ 中。例如下面的例子:

{
  "bin" : { "myapp" : "./cli.js" }
}

要确保执行文件中指向 bin 开始执行,也就是最上面一行要是 #!/usr/bin/env node ,否则脚本不会基于 node 执行。

然后就是基于 node 提供的接口进行相应功能开发,开发的方式不止一种,在网上查询时,较多使用了辅助开发的包 Commander.js,也有对应的中文文档,看了下比较容易上手,nyx 是基于 Node 遍历文件 做的一个工具,已发布到 npm 上。

开发完成后,本地可以使用 npm link 命令进行测试。测试完成后,发布到 npm 上,就可以在需要的时候安装使用。

其它知识点

process

process.argv 属性返回一个数组,其中包含当启动 Node.js 进程时传入的命令行参数。在获取输入命令的时候要用到。

process.cwd() 方法获取当前执行目录路径。

参考资料