Node.js 开发者的命令行利器 —— argparse。这篇文章将为你展示如何使用 argparse 库来构建一个强大的命令行应用程序。
🛠 快速开始
要在 Node.js 中使用 argparse,首先需要通过 NPM 安装它:
npm install argparse
接下来,让我们来创建一个简单的例子来看看它是如何工作的。
#!/usr/bin/env node
'use strict';
const { ArgumentParser } = require('argparse');
const { version } = require('./package.json');
const parser = new ArgumentParser({
description: 'Argparse example',
add_help: true
});
// 添加版本参数 -v 或 --version
parser.add_argument('-v', '--version', {
action: 'version',
version: `v${version}`, // 使用 package.json 中的版本号
help: '显示程序版本号并退出'
});
// 添加其他参数
parser.add_argument('-f', '--foo', { help: 'foo 功能的描述' });
parser.add_argument('-b', '--bar', { help: 'bar 功能的描述' });
// 解析命令行参数
const args = parser.parse_args();
console.dir(args);
这段代码首先导入了 argparse 库,并设置了一些基本的命令行参数。当你运行这个脚本时,参数 -v
或 --version
会输出程序的版本号。
📘 使用说明
在 argparse 中,你可以按照需求自定义各种命令行参数。例如,来看几个常用的参数说明:
// 添加一个带有默认值的参数
parser.add_argument('--verbose', {
action: 'store_true', // 当此参数存在时,将 verbose 设为 true
help: '启用详细模式'
});
// 添加一个必须指定值的参数
parser.add_argument('input', {
type: 'string', // 参数类型为字符串
help: '输入文件路径'
});
// 添加一个选择值范围的参数
parser.add_argument('--speed', {
choices: ['fast', 'medium', 'slow'], // 参数值限定在某些选项中
default: 'medium', // 默认值为 'medium'
help: '处理速度'
});
// 解析参数并使用
const parsedArgs = parser.parse_args();
if (parsedArgs.verbose) {
console.log('详细模式已启用');
}
console.log(`输入文件为:${parsedArgs.input}`);
console.log(`处理速度:${parsedArgs.speed}`);
在定义参数时,我们可以指定其行为、类型、默认值和选择范围,使得参数能够满足各种复杂的使用场景。
🔄 子命令支持
argparse 同样支持子命令,使得你可以构建出更为复杂的命令行程序:
const subparsers = parser.add_subparsers({
title: 'subcommands',
dest: "subcommand_name"
});
const start = subparsers.add_parser('start', {add_help: true});
start.add_argument('-p', '--port', {
type: 'int',
help: '启动时使用的端口'
});
const stop = subparsers.add_parser('stop', {add_help: true});
stop.add_argument('--force', {
action: 'store_true',
help: '强制停止'
});
const args = parser.parse_args();
// 根据子命令执行相应的操作
switch (args.subcommand_name) {
case 'start':
console.log(`启动服务,端口:${args.port}`);
break;
case 'stop':
console.log(`停止服务${args.force ? ' (强制)' : ''}`);
break;
}
在这个例子中,我们添加了两个子命令 start
和 stop
,它们都拥有自己特定的参数。
这就是 argparse 的强大之处:简单易用,同时功能丰富,允许你构建出结构清晰、功能强大的命令行接口。
以上就是对 argparse 库的一个简单介绍和使用展示。希望你能喜欢并开始使用 argparse,让你的 Node.js 命令行应用更上一层楼!
原文链接:https://juejin.cn/post/7343862045122920500 作者:岳晓亮