当前位置: 首页 > news >正文

Commander 一款命令行自定义命令依赖

一、安装 `commander` 插件

npm install commander

二、基本用法

1. 创建一个简单的命令行程序

创建一个 JavaScript 文件,例如 `mycli.js`,并添加以下代码:

// 引入 `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. 运行命令行程序

node mycli.js -n YQ -a 18# Hello, YQ! You are 18 years old.

三、使用子命令

1. 创建子命令

你可以在 `program` 对象上添加子命令,例如:

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. 运行子命令

node mycli.js greet -n YQ# Hello, YQ!node mycli.js sum 5 3# The sum of 5 and 3 is 8

四、使用命令参数

1. 处理命令参数

你可以直接在 `action` 函数中处理命令参数,例如:

program.command("echo <message...>") // 创建一个名为 `echo` 的命令,使用 `...` 表示可以接受多个参数。.description("Echo the message").action((...args) => {// 使用扩展运算符 `...` 接收多个参数。const message = args.slice(0, -1).join(" "); // 将除最后一个参数(最后一个参数是 `commander` 内部的)之外的所有参数拼接为一个字符串。console.log(message);});

2. 运行命令

使用以下命令运行:

node mycli.js echo Hello World# Hello,World [object Object]

五、添加帮助信息

1. 自定义帮助信息

你可以自定义帮助信息,例如:

// 添加一个事件监听器,当用户输入 `--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` 方法添加事件监听器。

相关文章:

Commander 一款命令行自定义命令依赖

一、安装 commander 插件 npm install commander 二、基本用法 1. 创建一个简单的命令行程序 创建一个 JavaScript 文件&#xff0c;例如 mycli.js&#xff0c;并添加以下代码&#xff1a; // 引入 commander 模块并获取 program 对象。const { program } require("…...

Day24 洛谷普及2004(内涵前缀和与差分算法)

零基础洛谷刷题记录 Day01 2024.11.18 Day02 2024.11.25 Day03 2024.11.26 Day04 2024.11.28 Day05 2024.11.29 Day06 2024 12.02 Day07 2024.12.03 Day08 2024 12 05 Day09 2024.12.07 Day10 2024.12.09 Day11 2024.12.10 Day12 2024.12.12 Day13 2024.12.16 Day14 2024.12.1…...

遗传算法与深度学习实战(33)——WGAN详解与实现

遗传算法与深度学习实战&#xff08;33&#xff09;——WGAN详解与实现 0. 前言1. 训练生成对抗网络的挑战2. GAN 优化问题2.1 梯度消失2.2 模式崩溃 2.3 无法收敛3 Wasserstein GAN3.1 Wasserstein 损失3.2 使用 Wasserstein 损失改进 DCGAN 小结系列链接 0. 前言 原始的生成…...

gitlab云服务器配置

目录 1、关闭防火墙 2、安装gitlab 3、修改配置 4、查看版本 GitLab终端常用命令 5、访问 1、关闭防火墙 firewall-cmd --state 检查防火墙状态 systemctl stop firewalld.service 停止防火墙 2、安装gitlab xftp中导入安装包 [rootgitlab ~]#mkdir -p /service/tool…...

SAP SD学习笔记27 - 请求计划(开票计划)之1 - 定期请求(定期开票)

上两章讲了贩卖契约&#xff08;框架协议&#xff09;的概要&#xff0c;以及贩卖契约中最为常用的 基本契约 - 数量契约和金额契约。 SAP SD学习笔记26 - 贩卖契约(框架协议)的概要&#xff0c;基本契约 - 数量契约_sap 框架协议-CSDN博客 SAP SD学习笔记27 - 贩卖契约(框架…...

HTML DOM 修改 HTML 内容

HTML DOM 修改 HTML 内容 引言 HTML DOM(文档对象模型)是浏览器内部用来解析和操作HTML文档的一种机制。通过DOM,我们可以轻松地修改HTML文档的结构、样式和行为。本文将详细介绍如何使用HTML DOM来修改HTML内容,包括元素的增删改查、属性修改以及事件处理等。 1. HTML …...

基于VMware的ubuntu与vscode建立ssh连接

1.首先安装openssh服务 sudo apt update sudo apt install openssh-server -y 2.启动并检查ssh服务状态 到这里可以按q退出 之后输入命令 &#xff1a; ip a 红色挡住的部分就是我们要的地址&#xff0c;这里就不展示了哈 3.配置vscode 打开vscode 搜索并安装&#xff1a;…...

Flutter Candies 一桶天下

| | | | | | | | 入魔的冬瓜 最近刚入桶的兄弟&#xff0c;有责任心的开发者&#xff0c;对自己的项目会不断进行优化&#xff0c;达到最完美的状态 自定义日历组件 主要功能 支持公历&#xff0c;农历&#xff0c;节气&#xff0c;传统节日&#xff0c;常用节假日 …...

maven如何不把依赖的jar打包到同一个jar?

spring boot项目打jar包部署&#xff1a; 经过以下步骤&#xff0c; 最终会形成maven依赖的多个jar&#xff08;包括lib下添加的&#xff09;、 我们编写的程序代码打成一个jar&#xff0c;将程序jar与 依赖jar分开&#xff0c;便于管理&#xff1a; success&#xff1a; 最终…...

HTML5 技术深度解读:本地存储与地理定位的最佳实践

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 02-HTML常见文本标签解析&#xff1a;从基础到进阶的全面指南 03-HTML从入门到精通&#xff1a;链接与图像标签全解析 04-HTML 列表标签全解析&#xff1a;无序与有序列表的深度应用 05-HTML表格标签全面…...

AIGC技术中常提到的 “嵌入转换到同一个向量空间中”该如何理解

在AIGC&#xff08;人工智能生成内容&#xff09;技术中&#xff0c;“嵌入转换到同一个向量空间中”是一个核心概念&#xff0c;其主要目的是将不同类型的输入数据&#xff08;如文本、图像、音频等&#xff09;映射到一个统一的连续向量空间中&#xff0c;从而实现数据之间的…...

【机器学习理论】朴素贝叶斯网络

基础知识&#xff1a; 先验概率&#xff1a;对某个事件发生的概率的估计。可以是基于历史数据的估计&#xff0c;可以由专家知识得出等等。一般是单独事件概率。 后验概率&#xff1a;指某件事已经发生&#xff0c;计算事情发生是由某个因素引起的概率。一般是一个条件概率。 …...

Docker 部署 GLPI(IT 资产管理软件系统)

GLPI 简介 GLPI open source tool to manage Helpdesk and IT assets GLPI stands for Gestionnaire Libre de Parc Informatique&#xff08;法语 资讯设备自由软件 的缩写&#xff09; is a Free Asset and IT Management Software package, that provides ITIL Service De…...

【Vaadin flow 实战】第5讲-使用常用UI组件绘制页面元素

vaadin flow官方提供的UI组件文档地址是 https://vaadin.com/docs/latest/components这里&#xff0c;我简单实战了官方提供的一些免费的UI组件&#xff0c;使用案例如下&#xff1a; Accordion 手风琴 Accordion 手风琴效果组件 Accordion 手风琴-测试案例代码 Slf4j PageT…...

强化学习 DAY1:什么是 RL、马尔科夫决策、贝尔曼方程

第一部分 RL基础&#xff1a;什么是RL与MRP、MDP 1.1 入门强化学习所需掌握的基本概念 1.1.1 什么是强化学习&#xff1a;依据策略执行动作-感知状态-得到奖励 强化学习里面的概念、公式&#xff0c;相比ML/DL特别多&#xff0c;初学者刚学RL时&#xff0c;很容易被接连不断…...

理解神经网络:Brain.js 背后的核心思想

温馨提示 这篇文章篇幅较长,主要是为后续内容做铺垫和说明。如果你觉得文字太多,可以: 先收藏,等后面文章遇到不懂的地方再回来查阅。直接跳读,重点关注加粗或高亮的部分。放心,这种“文字轰炸”不会常有的,哈哈~ 感谢你的耐心阅读!😊 欢迎来到 brain.js 的学习之旅!…...

【Docker】dockerfile识别当前构建的镜像平台

在编写dockerfile的时候&#xff0c;可能会遇到需要针对不同平台进行不同操作的时候&#xff0c;这需要我们对dockerfile进行针对性修改。 比如opencv的依赖项libjasper-dev在ubuntu18.04上就需要根据不同的平台做不同的处理&#xff0c;关于这个库的安装在另外一篇博客里面有…...

【VM】VirtualBox安装CentOS8虚拟机

阅读本文前&#xff0c;请先根据 VirtualBox软件安装教程 安装VirtualBox虚拟机软件。 1. 下载centos8系统iso镜像 可以去两个地方下载&#xff0c;推荐跟随本文的操作用阿里云的镜像 centos官网&#xff1a;https://www.centos.org/download/阿里云镜像&#xff1a;http://…...

【C++篇】哈希表

目录 一&#xff0c;哈希概念 1.1&#xff0c;直接定址法 1.2&#xff0c;哈希冲突 1.3&#xff0c;负载因子 二&#xff0c;哈希函数 2.1&#xff0c;除法散列法 /除留余数法 2.2&#xff0c;乘法散列法 2.3&#xff0c;全域散列法 三&#xff0c;处理哈希冲突 3.1&…...

Java篇之继承

目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…...

告别C盘爆满!手把手教你配置Miniforge,让所有虚拟环境乖乖待在D盘

彻底解放C盘空间&#xff1a;Miniforge虚拟环境全迁移至D盘实战指南 每次打开资源管理器看到C盘飘红的存储条&#xff0c;心跳都会漏半拍——这大概是Windows开发者最熟悉的焦虑场景。特别是当你发现conda创建的虚拟环境正悄无声息吞噬着宝贵的系统盘空间时&#xff0c;那种无…...

GyroFlow:用陀螺仪数据重塑视频稳定技术

GyroFlow&#xff1a;用陀螺仪数据重塑视频稳定技术 【免费下载链接】gyroflow Video stabilization using gyroscope data 项目地址: https://gitcode.com/GitHub_Trending/gy/gyroflow 在数字影像创作领域&#xff0c;画面稳定性直接决定作品专业度。无论是运动相机拍…...

GLM-4.7-Flash效果展示:中文诗歌格律检测+不合格处自动标注与修改建议

GLM-4.7-Flash效果展示&#xff1a;中文诗歌格律检测不合格处自动标注与修改建议 1. 引言&#xff1a;当AI遇见古典诗词 你有没有想过&#xff0c;让一个AI来当你的诗词老师&#xff1f;不是那种只会背诗的AI&#xff0c;而是能一眼看出你写的诗哪里平仄不对、哪里押韵出错的…...

阿里开源Z-Image镜像体验:ComfyUI可视化生成汉服美女实战

阿里开源Z-Image镜像体验&#xff1a;ComfyUI可视化生成汉服美女实战 1. 开篇&#xff1a;当汉服遇见AI绘画 想象一下&#xff0c;你只需要输入"一位穿着汉服的中国女性站在樱花树下"&#xff0c;AI就能在几秒钟内生成一张细节精致的写实风格图像。这不再是科幻场景…...

Ollama+Qwen2.5-VL搭建教程:打造你的智能视觉分析工具

OllamaQwen2.5-VL搭建教程&#xff1a;打造你的智能视觉分析工具 1. 引言&#xff1a;为什么选择Qwen2.5-VL 在当今AI技术快速发展的时代&#xff0c;视觉-语言多模态模型正成为解决复杂问题的关键工具。Qwen2.5-VL-7B-Instruct作为通义千问系列的最新成员&#xff0c;在视觉…...

利用快马平台快速构建技能评估系统原型:以skill-vetter为例

利用快马平台快速构建技能评估系统原型&#xff1a;以skill-vetter为例 最近在做一个前端开发技能评估系统&#xff0c;需要快速验证产品原型。传统开发流程从搭建环境到功能实现至少需要1-2周&#xff0c;但通过InsCode(快马)平台的AI辅助和现成模板&#xff0c;我只用了3天就…...

JETSON平台SDKManager一站式部署指南:从刷机到外置存储系统迁移

1. 开箱即用&#xff1a;JETSON开发板基础准备 刚拿到JETSON开发板时&#xff0c;很多开发者会对着这块巴掌大的硬件发懵。以我经手过的几十块JETSON TX2 NX为例&#xff0c;正确的开箱姿势应该是先检查配件完整性。除了开发板本体&#xff0c;你还需要准备&#xff1a; 5V/4…...

深度学习驱动的光谱超分辨率:技术演进与应用前景

1. 光谱超分辨率技术的前世今生 我第一次接触光谱超分辨率技术是在2015年&#xff0c;当时还在用传统的线性插值方法处理遥感图像。记得有次为了获取一片农田的高光谱数据&#xff0c;团队不得不动用昂贵的机载传感器&#xff0c;结果因为天气原因导致数据质量极差。正是这次经…...

usearch的内存泄漏自动化测试:在CI中集成泄漏检测

usearch的内存泄漏自动化测试&#xff1a;在CI中集成泄漏检测 【免费下载链接】usearch Fastest Open-Source Search & Clustering engine for Vectors & &#x1f51c; Strings in C, C, Python, JavaScript, Rust, Java, Objective-C, Swift, C#, GoLang, and Wolf…...

【Oracle篇】基于OGG 21c全程图形化实现9TB数据从Oracle 11g到19c的不停机迁移(上):微服务架构详解与微服务部署,及同步问题总览(第一篇,总共三篇)

&#x1f4ab;《博主主页》&#xff1a;    &#x1f50e; CSDN主页&#xff1a; 奈斯DB    &#x1f50e; IF Club社区主页&#xff1a; 奈斯、    &#x1f50e; 微信公众号&#xff1a; 奈斯DB &#x1f525;《擅长领域》&#xff1a;    &#x1f5c3;️ 数据库…...