commander 是一个 Node.js 命令行界面的解决方案,可以帮助开发者快速构建命令行工具。它提供了一组简单易用的 API,可以帮助开发者定义命令行参数、选项和子命令,并解析命令行参数,方便开发者编写命令行工具。
使用 commander 插件,可以轻松地定义命令行参数、选项和子命令,并在命令行中解析这些参数。
1.首先添加commander插件
npm i commander
2.添加option:
#!/usr/bin/env node
//commander插件,用于解析命令行参数
const { program } = require('commander');
//当在终端使用 showtime -s 或者 showtime --save时会显示save something
//这个方法就是添加帮助项,<save>表示传递的参数,使用时应该这样使用 showtime -s xxxx 或者 showtime --save xxxx
program.option('-s --save <save>', 'save something');
在命令行里输入showtime -s就会
error: option '-s --save <save>' argument missing
3.用action来执行
#!/usr/bin/env node
//commander插件,用于解析命令行参数
const { program } = require('commander');
program
.command('show')
.description('显示时间')
.action(() => {
const now = new Date();
console.log(`现在的时间是: ${now.toLocaleTimeString()}`);
});
program.parse(process.argv);
输出:
PS D:\MyScript> showtime show
现在的时间是: 下午3:34:26
4.关于process.argv
process.argv是一个包含命令行参数的数组。在Node.js中,当我们在命令行中运行一个脚本时,可以在命令行中传递参数,这些参数会被存储在process.argv数组中。
process.argv数组的前两个元素是固定的,分别是Node.js的可执行文件路径和当前脚本的文件路径。从第三个元素开始,就是命令行中传递的参数。
例如:
console.log(`process.argv[0]: ${process.argv[0]}`)
console.log(`process.argv[1]: ${process.argv[1]}`)
console.log(`process.argv[2]: ${process.argv[2]}`)
console.log(`process.argv[3]: ${process.argv[3]}`)
输出:(中间的文件夹名用bala…bala省略了)
process.argv[0]: D:\bala...bala\nodeTool\node.exe
process.argv[1]: C:\Users\bala...bala\showTime.js
process.argv[2]: show
process.argv[3]: undefined
5.关于program.parse(process.argv)
program.parse(process.argv)是commander库中的一个方法,用于解析命令行参数。在使用commander库时,我们通常会定义一组命令、选项和参数,然后使用program.parse(process.argv)方法解析命令行参数,根据参数执行不同的逻辑。
6.关于action
action 是 commander 包中 command 对象的一个方法,用于定义当命令被调用时将执行的函数。
7.关于cwd
要获取程序运行时的当前工作目录,可以使用 Node.js 的 process.cwd() 方法。这个方法返回一个字符串,表示当前工作目录的路径。
console.log(`process.cwd: ${process.cwd()}`)
输出:
process.cwd: D:\bala...bala