什么是命令行工具?
命令行工具(Cmmand Line Interface)简称cli,顾名思义就是在命令行终端中使用的工具。我们常用的 git 、npm、vim 等都是 cli 工具,比如我们可以通过 git clone 等命令简单把远程代码复制到本地。
开发命令行工具常用的库
commander // 参数解析
chalk // 文字加颜色
shelljs // 运行shell命令
Inquirer // 交互信息收集
开发步骤
1. 首先npm初始化一个项目
npm init -y
2. 安装几个npm包
npm i commander chalk shelljs inquirer --save
3. 开始写自定义命令啦
如何让终端识别这个命令呢?打开 package.json 文件,添加一个字段 bin,并且声明一个命令关键字和对应执行的文件(在 bin 中注册这个指令)
{
"name": "command",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
// 命令行注册的地方
"bin": {
// 命令名字叫 sayHello
// 对应执行 sayHello.js 这个文件
"sayHello": "sayHello.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"chalk": "^5.0.0",
"commander": "^9.0.0",
"inquirer": "^8.2.0",
"shelljs": "^0.8.5"
}
}
sayHello.js 内容
配置#!/usr/bin/env node
, 解决了不同的用户node路径不同的问题,可以让系统动态的去查找node来执行你的脚本文件
#! /usr/bin/env node
console.log('hello')
4. 发布命令
当我们直接输入 sayHello 时,sayHello并没有发布到 npm 上,当然也没有安装过,所以终端现在还不认识这个命令。通常我们想本地测试一个 npm 包,可以使用:npm link 这个命令,本地安装这个包
npm link
成功后提示安装了一个包
5. 执行命令
现在一个简易版本的命令行就开发完成啦