Open XXHolic opened 5 years ago
在 Node 遍历文件 中脚本的使用并不方便,解决的方法也很容易想到,在使用一些全局包的时候,可以执行一些特定的命令,例如 npm、nrm。类似的,可以把自己需要的一些脚本弄成一个单独包,基于 Node 将自定义的命令添加到全局使用,也就是 Node 命令行工具的开发。
npm
nrm
首先是用到了 package.json 中的 bin 字段,这个字段是命令名称和本地文件的映射,当安装时,npm 会把这个文件链接到全局的 prefix/bin 或者本地的 ./node_modules/.bin/ 中。例如下面的例子:
package.json
bin
prefix/bin
./node_modules/.bin/
{ "bin" : { "myapp" : "./cli.js" } }
要确保执行文件中指向 bin 开始执行,也就是最上面一行要是 #!/usr/bin/env node ,否则脚本不会基于 node 执行。
#!/usr/bin/env node
然后就是基于 node 提供的接口进行相应功能开发,开发的方式不止一种,在网上查询时,较多使用了辅助开发的包 Commander.js,也有对应的中文文档,看了下比较容易上手,nyx 是基于 Node 遍历文件 做的一个工具,已发布到 npm 上。
开发完成后,本地可以使用 npm link 命令进行测试。测试完成后,发布到 npm 上,就可以在需要的时候安装使用。
process
require()
process.argv 属性返回一个数组,其中包含当启动 Node.js 进程时传入的命令行参数。在获取输入命令的时候要用到。
process.argv
process.cwd() 方法获取当前执行目录路径。
process.cwd()
引子
在 Node 遍历文件 中脚本的使用并不方便,解决的方法也很容易想到,在使用一些全局包的时候,可以执行一些特定的命令,例如
npm
、nrm
。类似的,可以把自己需要的一些脚本弄成一个单独包,基于 Node 将自定义的命令添加到全局使用,也就是 Node 命令行工具的开发。实现方式
首先是用到了
package.json
中的bin
字段,这个字段是命令名称和本地文件的映射,当安装时,npm
会把这个文件链接到全局的prefix/bin
或者本地的./node_modules/.bin/
中。例如下面的例子:要确保执行文件中指向
bin
开始执行,也就是最上面一行要是#!/usr/bin/env node
,否则脚本不会基于 node 执行。然后就是基于 node 提供的接口进行相应功能开发,开发的方式不止一种,在网上查询时,较多使用了辅助开发的包 Commander.js,也有对应的中文文档,看了下比较容易上手,nyx 是基于 Node 遍历文件 做的一个工具,已发布到 npm 上。
开发完成后,本地可以使用 npm link 命令进行测试。测试完成后,发布到 npm 上,就可以在需要的时候安装使用。
其它知识点
process
process
对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。require()
。process.argv
属性返回一个数组,其中包含当启动 Node.js 进程时传入的命令行参数。在获取输入命令的时候要用到。process.cwd()
方法获取当前执行目录路径。参考资料