什么是 CLI
CLI 全称是 Command Line Interface,是一类通过命令行交互的终端工具。Web开发中,我们无时无刻都在使用CLI 辅助开发,提升操作效率,比如 git、npm、webpack、vite 等
为什么需要 CLI
CLI 可以帮助我们更高效的操作计算机系统,工作中,我们可以我们将有规律可循的、重复的、繁琐的、模板化的工作,集成到CLI工具中。一个命令,即可快速的完成一些列操作
相比于 GUI 工具(用户图形界面)
- GUI:更侧重易用性,用户通过点击图形界面,完成相关
- CLI:更侧重操作效率,通过命令组合自动化操作、批量操作等
Node CLI 开发核心步骤
前置说明: 略过 npm init -y 初始化项目等操作
1. 写要执行的程序
项目中定义命令文件,文件头部必须有 #!/usr/bin/env node, 表明这个文件是需要用node来执行,了解python的同学,应该见过 #!/usr/bin/env python, 是一个意思
#!/usr/bin/env node
console.log('Start to Dev Node CLI');
2. 定义终端执行命令
package.json 文件中,声明 bin 字段;格式为:
<command>: <JS file>
{
"bin": {
"my-cli": "./bin/index.js"
}
}
3. 调试 CLI 工具
两种方式,本地打包或者发布到npm,发布到npm的方式,就是大家平时装包的方式了,这里讲一下本地方式
- 打包 项目终端执行命令
npm pack
- 全局安装
比如你的项目成叫my-cli
npm i my-cli-1.0.0.tgz -g
- 终端执行
Node CLI 最佳实践
遵循 POSIX 参数
POSIX 语法已被广泛接受为命令行工具的标准,我们开发命令行工具时,应该遵守它。 常见规则举例如下:
- 可以指令帮助或示例中将选项参数或选项标记为方括号( [] )表示它们是可选的;或带有尖括号( <> )表示它们是必需的。
- 允许使用短格式的单个字母参数作为长格式参数的别名(请参阅 GNU 编码标准)
- 使用缩写形式单数指定的选项 - 可以包含一个字母数字字符。
- 指定多个没有值的选项可以进行分组,例如 myCli -abc 等效于 myCli -a -b -c
命令行高级用户希望您的命令行应用程序具有与其他 Unix 应用程序类似的约定
遵循 Semver 版本
版本格式 X.Y.Z-[state]
- X 代表 主版本号:功能新增、移除,API不向下兼容
- Y 代表 次版本号:功能新增,API向下兼容
- Z 代表 修订版本号:问题修复,API向下兼容
- [state] 状态解释如下
描述 | 说明 |
---|---|
alpha | 内测版本:bug 较多 |
beta | 公测版本:存在bug,有缺陷 |
gamma | 相当成熟的测试版:与发行版相差无几(一般略过此版本) |
rc | 发行倒计时版本:实现了全部功能,修复了大部分 bug,接近发布倒计时,有时会进一步细分为 rc.1、rc.2 |
下一小节学习 commander.js 终端命令框架