下面我会详细讲解“详解用node编写自己的cli工具”的完整攻略。
前置知识
首先,Node.js是一种服务器端JavaScript运行环境,它可以让我们使用JavaScript编写后端代码。如果你想编写自己的CLI工具,你需要对Node.js有基础的了解。
CLI全称是Command Line Interface,即命令行界面。在CLI中,用户通过命令行(terminal/bash等)与某个程序进行交互。而CLI工具则是能够通过命令行调用的一些独立的工具程序,允许用户通过指令完成某些特定的操作。
创建cli工具的步骤
创建一个CLI工具的步骤如下:
1. 创建一个新的npm项目
mkdir mycli
cd mycli
npm init --yes
2. 添加必要的依赖
实际上我们只需要一个依赖,即yargs
,它可以让我们轻松的解析命令行参数,只需运行下面的命令即可:
npm i yargs
3. 创建一个命令
我们需要在命令行中通过指令调用我们的CLI工具。因此,我们需要创建一个命令:
const yargs = require('yargs');
yargs.command({
command: 'hello',
describe: 'Say hello',
handler: () => {
console.log('hello, world!');
}
});
yargs.parse();
在上面的代码中,我们首先用yargs
模块创建了一个新的命令。命令有一个名字hello
,一个简单的描述Say hello
,以及一个处理程序handler
。在处理程序中我们只需要简单地在控制台输出hello, world!
即可。
4. 将命令打包成可执行文件
我们可以使用npm来打包我们的CLI工具,只需要将以下代码添加到package.json
中即可:
"bin": {
"mycli": "./index.js"
}
在上面的代码中,我们将mycli
指定为CLI工具的名称,将./index.js
指定为CLI工具的入口文件。这就意味着用户只需在命令行中输入mycli
就可以调用我们刚刚创建的命令。
5. 测试我们的CLI工具
最后,我们需要在终端中进行测试。首先,在你的CLI工具项目目录下执行下面的命令:
npm link
这将会在全局环境中创建一个软链接,让你可以在任何地方都可以通过mycli
命令来调用刚刚创建的CLI工具。
现在,如果输入下面的命令:
mycli hello
你应该可以看到输出hello, world!
的信息。
示例
下面提供两个示例,分别是简单的加法计算器和进制转换工具。
加法计算器
const yargs = require('yargs');
yargs.command({
command: 'add <num1> <num2>',
describe: 'Add two numbers',
builder: (yargs) => {
return yargs
.positional('num1', {
describe: 'First number'
})
.positional('num2', {
describe: 'Second number'
});
},
handler: (argv) => {
console.log(argv.num1 + argv.num2);
}
});
yargs.parse();
在上述代码中,我们首先定义了一个名为add
的命令,它需要两个参数num1
和num2
。我们使用positional
方法来定义这两个参数,同时也指定了每个参数的说明。
虽然这不是什么强大的计算器,但它们就足以体现处理参数的能力,与此同时,要学到一些基础知识。
进制转换工具
const yargs = require('yargs');
yargs.command({
command: 'convert <number> <from> <to>',
describe: 'Convert number from one base to another',
builder: (yargs) => {
return yargs
.positional('number', {
describe: 'Number to convert'
})
.positional('from', {
describe: 'Base to convert from',
choices: ['binary', 'octal', 'decimal', 'hexadecimal']
})
.positional('to', {
describe: 'Base to convert to',
choices: ['binary', 'octal', 'decimal', 'hexadecimal']
});
},
handler: (argv) => {
let number = parseInt(argv.number, getRadix(argv.from));
console.log(number.toString(getRadix(argv.to)));
}
});
// 计算出给定进制的底数
function getRadix(base) {
switch (base) {
case 'binary':
return 2;
case 'octal':
return 8;
case 'decimal':
return 10;
case 'hexadecimal':
return 16;
}
}
yargs.parse();
这个例子需要将一个数字从一种基数转换为另一种基数。在上面的代码中,我们定义了convert
命令,并在命令中定义了三个位置参数:待转换的数字、转换数字的基数以及目标基数。
在处理程序中,我们首先使用parseInt
函数将输入值从指定的基数转换为十进制数,然后使用toString
函数将十进制数转换为指定的进制数。注:由于parseInt
函数接收数字字符串和源的进制为参数转换成10进制数,ToString需要接收一个数字和目标进制作为参数。
总结
通过这个完整攻略,我们了解了创建CLI工具的基本步骤以及创建命令的方法。当然,在实际操作中,CLI工具的创建过程可能比这个复杂得多,但是我们掌握了基本方法,我们可以使用自己的方式完成,让我们方便地使用命令行来完成一些任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解用node编写自己的cli工具 - Python技术站