一、安装 `commander` 插件
bash
npm install commander
二、基本用法
1. 创建一个简单的命令行程序
创建一个 JavaScript 文件,例如 `mycli.js`,并添加以下代码:
javascript
// 引入 `commander` 模块并获取 `program` 对象。
const { program } = require("commander");
program
.version("1.0.0") // 设置命令行工具的版本
.description("A simple CLI tool using commander") // 设置命令行工具的描述
.option("-n, --name <name>", "Your name") // 添加一个选项 `-n` 或 `--name`,并指定其为一个参数 `<name>`,同时提供描述。
.option("-a, --age <age>", "Your age") // 添加另一个选项 `-a` 或 `--age`,并指定其为一个参数 `<age>`,同时提供描述。
.action((options) => {
// 定义执行命令时的操作,这里使用 `options` 对象来获取用户输入的选项值,并打印出问候语。
console.log(`Hello, ${options.name}! You are ${options.age} years old.`);
});
// 解析命令行参数
program.parse(process.argv);
2. 运行命令行程序
bash
node mycli.js -n YQ -a 18
# Hello, YQ! You are 18 years old.
三、使用子命令
1. 创建子命令
你可以在 `program` 对象上添加子命令,例如:
javascript
const { program } = require("commander");
program.version("1.0.0").description("A simple CLI tool using commander");
program
.command("greet") // 创建一个名为 `greet` 的子命令
.alias("gre") // 创建快捷命令 gre = greet
.description("Greet a person") // 为 `greet` 子命令添加描述
.option("-n, --name <name>", "Your name") // 为 `greet` 子命令添加选项
.action((options) => {
// 为 `greet` 子命令添加操作函数
console.log(`Hello, ${options.name}!`);
});
program
.command("sum <a> <b>") // 创建一个名为 `sum` 的子命令,需要两个参数 `<a>` 和 `<b>`
.description("Sum two numbers")
.action((a, b) => {
// 为 `sum` 子命令添加操作函数,将 `a` 和 `b` 转换为整数并求和
const result = parseInt(a) + parseInt(b);
console.log(`The sum of ${a} and ${b} is ${result}`);
});
program.parse(process.argv);
2. 运行子命令
bash
node mycli.js greet -n YQ
# Hello, YQ!
node mycli.js sum 5 3
# The sum of 5 and 3 is 8
四、使用命令参数
1. 处理命令参数
你可以直接在 `action` 函数中处理命令参数,例如:
javascript
program
.command("echo <message...>") // 创建一个名为 `echo` 的命令,使用 `...` 表示可以接受多个参数。
.description("Echo the message")
.action((...args) => {
// 使用扩展运算符 `...` 接收多个参数。
const message = args.slice(0, -1).join(" "); // 将除最后一个参数(最后一个参数是 `commander` 内部的)之外的所有参数拼接为一个字符串。
console.log(message);
});
2. 运行命令
使用以下命令运行:
javascript
node mycli.js echo Hello World
# Hello,World [object Object]
五、添加帮助信息
1. 自定义帮助信息
你可以自定义帮助信息,例如:
javascript
// 添加一个事件监听器,当用户输入 `--help` 时,打印自定义的帮助信息。
program.on("--help", () => {
console.log("");
console.log("Examples:");
console.log(" $ mycli greet --name Alice");
console.log(" $ mycli sum 5 3");
console.log(" $ mycli echo Hello World");
});
六、总结
`commander` 是一个强大的命令行工具,可以帮助你创建复杂的命令行程序。
通过 `option` 方法添加选项,`command` 方法添加子命令,`action` 方法定义操作。
使用 `parse` 方法解析命令行参数,使用 `on` 方法添加事件监听器。