从零到一:用 Node.js 打造你的专属 CLI 工具
为什么需要 CLI 工具?
CLI(命令行工具)是开发者提升效率的利器,例如 git
、npm
等工具都离不开 CLI。本文教你如何用 Node.js 快速构建一个功能丰富的 CLI 工具。让我们开始学习之旅吧。
准备工作
安装 Node.js 环境,参考文档:https://webfem.com/post/express
初始化项目:
npm init
安装核心依赖:
commander
: 可以监听控制台输入,处理命令参数chalk
:终端美化,提供多种终端样式,如高亮、斜体等inquirer
:交互式输入,提供选择菜单,提高 cli 交互性ora
: loading 效果
npm install commander chalk inquirer@8 ora@5
核心代码实现
1. 实现一个简单输出
第一步,我们先实现一个可以用 cli 命令执行的脚本
1.1 创建可执行的脚本 bin/index.js
#!/usr/bin/env node
console.log('Hello world')
执行脚本的入口一定要加 #!/usr/bin/env node
1.2 在 package.json
中配置执行命令
"bin": {
"kola": "bin/index.js"
},
首先,cli 的执行命令需要写到 bin 这个属性下
属性名是命令的执行名称,属性值是执行的脚本,这里的
kola
是我随便起的名字
1.3 设置全局执行
上一步设置好之后,可以通过
npx kola
执行脚本也可以运行
npm link
之后,通过kola
单命令即可执行
2. 脚本处理输入
cli 处理控制台的输入推荐使用commander
,它可以快速处理用户输入,以及相关参数处理
const { program } = require("commander");
program
.command("greet <name>")
.action((name) => {
console.log(`Hello, ${name}!`);
});
program.parse(process.argv); // 确保调用 parse 方法
这里通过commander 定义了一个 greet
命令,接受一个 name
参数
在用户输入 kola gree world
之后,cli 脚本获取到 greet
命令以及 world
这个参数,之后会输出 Hello,world
3. 配置参数
配置参数用到 commander
的option
方法,获取参数数据可以在action
的 options
参数中获取
const chalk = require("chalk");
program
.command("greet <name>")
.option("-c, --color <color>", "设置文字颜色(如 red, green, blue)")
.action((name, options) => {
const color = options.color || "green";
console.log(chalk[color](`你好,${name}!`));
});
运行 npx kola greet space -c red
可以得到红色的 你好,space!
4. 增加可选项
通过选择项配置,可以增强 cli 的交互性。我们可以利用 inquirer
来生成选择项
const ora = require("ora");
const inquirer = require("inquirer");
program
.command("quiz")
.description("进行编程语言问答")
.action(async () => {
const answers = await inquirer.prompt([
{
type: "list",
name: "language",
message: "你最喜欢的编程语言是什么?",
choices: ["JavaScript", "Python", "Rust", "Go"],
},
]);
const spinner = ora("正在保存答案...").start();
setTimeout(() => {
spinner.succeed(`已记录:你喜欢 ${answers.language}`);
}, 1500);
});
输入 npx kola quiz
即可进行列表选择
总结
通过以上步骤,一个完整的 cli 工具系统就搭建完成。
原文地址:https://webfem.com/post/cli,转载请注明出处