使用 node.js 创建自己的 cli 工具

174 阅读1分钟

需要创建一个自己的 cli 工具,其实很简单:

第一步:让命令跑起来

首先我们在一个空白项目中,进行 npm init 创建 package.json 文件

然后为这个 package.json 文件添加一个 bin 属性,下面两种方式都可以让 my-cli 成为命令:

"name": "my-cli"
"bin": "./bin/index.js"
"bin": {
    "my-cli": "./bin/index.js"
}

上面我们计划将我们的脚本放在 ./bin/index.js 中,所以接下来,我们来创建这个文件。它第一行是一个 shebang + 路径的形式。

这里要求这个路径需要绝对路径,但是我们不同的环境下,node 的安装路径是不同的,怎么解决这个问题呢?其实很简单,像下面这样写:

#! /usr/bin/env node

它表示先运行 /usr/bin/env,然后用它来运行 node。可参考这篇文章:五分钟了解 Node.js Shebang

我们完善这个文件,让它 console.log('hello world!')

最后,我们在项目根目录运行,将项目软链接到 npm 根目录。

$ npm link

image.png

第二步:让 cli 交互更好

我们使用一个 node.js 中广泛使用的库 commander

这个库,首先需要创建一个 program 实例:

const program = new Command();

然后使用 option 方法添加参数,它第一个参数是一个固定的格式写法,第二个参数是描述,第三个参数是默认值。

program.option('-p, --port <number>', 'listen port', 8080);

然后调用 parse 方法进行解析,然后通过 opts 方法可以获得用户输入的数值:

program.parse()
console.log(program.opts()) // 这个是用户输入的值,选项默认值获取不到