使用Node.js开发命令行工具

参考资料:
https://segmentfault.com/a/1190000002918295#articleHeader23
demo:
https://github.com/ALNY-AC/node-command-demo

概念

命令行工具是一个可以在命令行中执行的程序,比如:git、npm、node等。

一款好的命令行工具可以帮助我们事半功倍,比如vue-cli可以帮助我们快速搭建一个项目;npm可以帮助我们管理node项目和依赖管理等。

自己开发一款方便易用的命令行工具,可以让自己事半功倍,亦或是提升自己的技术水平。

起步

  1. 新建空的项目文件夹。
  2. 进入文件夹,通过npm init命令创建一个基于node的项目(一些选项可以回车略过,后面我会单独说明这些选项)。
  3. 在根目录下创建index.js
  4. 在index.js第一行加上代码:#!/usr/bin/env node
  5. 开始编写代码
#!/usr/bin/env node
console.log('Hello Word');
  1. 在根目录下执行node index.js

在这里插入图片描述

自此,你已经成功的搭建了一个node项目,并且成功的运行了起来,但这还不是我们想要的“命令行工具”

bin

通过node执行js文件不是我们想要的命令行工具,我们想要的是通过一个自定义的命令名来执行,比如npm i,npm就是自定义的名字。想要实现这一目标,就需要在package.json文件中配置bin选项

package.json

"bin": {
    
    
"node-cmd": "./index.js"
}

node-cmd:可以在命令行中执行的命令的名称

./index.js:命令行所执行的文件

bin可以配置多个名字

install

如果在项目目录下运行没有问题,可以将当前目录模块安装到全局,也可以采用此方法来更新你的命令行工具

npm install . -g

通过npm install的方式将你的命令行工具安装到全局,那个点“.”代表的就是你当前工程目录。

在这里插入图片描述

link

或者在项目目录下输入npm link,会自动将你当前项目关联到全局命令中

全局运行

打开任意命令行,输入bin中配置的名字,就可以全局运行你自己的命令行了!

图片

开源贡献

开发完的命令行工具,可以发布到npm库上供同事、朋友、技术群、全世界的人安装。

发布到npm中

发布必须注册 npm和github 账号,且源必须是npm的源,不能使用淘宝或其他的源。

npm publish

安装

全局安装

npm install -g node-cmd

或本地安装

npm install node-cmd

入门

仅仅输出一个字符串不是我们想要的。有时候我们期望用户可以在执行命令的时候带上一些参数,比如 npm i 的i就是安装的意思,比如 node index.js 后面的index.js其实也是一个参数,这个参数的意思是“根据这个路径执行这个文件”。

Commander

npm:https://www.npmjs.com/package/commander
中文文档:https://github.com/tj/commander.js/blob/HEAD/Readme_zh-CN.md

我们使用Commander库作为处理用户参数的工具

安装

在你项目根目录下执行:

npm install commander -S

获取用户参数

#!/usr/bin/env node
const program = require('commander');
program
    .option('-l, --language [lang]', '我喜欢的开发语言')
    .option('-x, --x', '学习')
program.parse(process.argv);
// 拿到所有参数
const options = program.opts();
console.warn(options.language);
console.warn(options.x);
if (options.language) {
    
    
    //如果参数是输入选项,则会返回输入的信息
}
if (options.x) {
    
    
    //如果参数非输入选项,则会返回一个boolen的值
}

执行结果

在这里插入图片描述

具体参数配置,可以查阅文档

猜你喜欢

转载自blog.csdn.net/u011233779/article/details/112980710