node.js之自己写命令行工具cli

好像已经半年没写点什么了,这半年玩了很多东西,但是网上基本上都有很多教程博文,不想去写一些重复的东西了。其实这个cli网上也有很多,不过觉得很有意思,接触之前觉得很酷(接触了之后觉得也是很简单的),所以稍微写下。

最近写了一个团队内部用来编写react component的脚手架,脚手架没啥好说的,不过脚手架完成后希望可以通过自定义命令行来生成脚手架文件,这样做比较容易使用,不用去clone脚手架的git然后还要修改git配置。

这次要说的就是这个好玩的node.js命令行工具cli的编写。首先一个项目在npm init之后会有个package.json文件,这个大家都知道,我们要做的就是在这个package.json文件里加入:

1
2
3
"bin": {
"hello": "bin/hello.js"
}

这句配置加上后,当你npm i -g xxx你的项目后,你就可以使用bin里的hello命令了,它的具体使用方法就是在bin目录下的hello.js里编写。

下面我就要说下具体的这个hello.js可执行脚本的编写:

首先这个hello.js的第一行要加入:

1
#!/usr/bin/env node

这句话告诉系统使用node来启动我们的命令

接下来就是nodejs的代码编写了,比如你加入

1
console.log('hello');

那么你的项目在-g安装后,在控制台输入hello命令就会输出’hello’;

当然这只是最简单的命令,我们在使用很多命令行工具时都会有很多子命令的使用,这个就需要借助一些包,比如shelljs或者yargs,这个这里就不细说了。

最后有个tips,node.js里有个__dirname全局变量,它表示当前执行文件的路径,通过它我们就可以找到npm -g安装的包的路径,可以方便我们做一些事情。

参考:http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html