4.9 commander.js

基于Commander.js构建TypeScript CLI框架:从原理到AI Agent实践 命令行界面(CLI)是开发者与系统交互的重要工具,其核心原理在于解析用户输入并路由到对应处理函数。通过成熟的CLI框架,开发者可以高效实现参数解析、帮助生成和错误处理等通用功能,显著提升工具的可维护性和扩展性。在Node.js生态中,Commander.js凭借其稳定的API和链式调用设计,成为构建结构化CLI的首选方案。本文以AI Agent CLI开发为例,深入探讨如何利用Commander.js实现子命令路由、类型安全配置及工程化最佳实践,为构建智能命令行工具提供完整解决方案。 阅读详情

github:https://github.com/tj/commander.js/blob/master/examples/arguments.js

1.示例

#!/usr/bin/env node
const BatchHttp = require('../src/index')
const commander = require('commander');
const program = new commander.Command();
const loginConfig = require('../src/data/login')
const createKeywordConfig = require('../src/data/create_keyword')
const createTaskConfig = require('../src/data/create_task')
const ParseXls = require('../src/tools/parse')
const getInstanceConfig = require('../src/data/get_running_instance')
const stopInstanceConfig = require('../src/data/stop_instance')
const runTaskConfig = require('../src/data/run_task')
const deleteConfig = require('../src/data/delete_task')
const resetConfig = require('../src/data/reset_task')
const getConfig = require('../src/data/get_task')
const checkRunningConfig = require('../src/data/check_running')
const getCancelInstanceConfig = require('../src/data/get_cancel_instance')
const runInstanceConfig = require('../src/data/run_instance')


program
    .name('run')
    .description('Batch process site tasks')
    .usage('[command] -[options]')
    .description('Example: run website --help')
    .version('1.0.1')
    .helpOption('-h, --help', '<command> list')//
    .addHelpCommand(false) //关闭默认的内建子命令帮助信息
    .showHelpAfterError(true)
program.command('website')
    .description('Batch run')
    .option('-c,--create', 'Batch create all tasks from file')
    .option('-s,--stop', 'Batch stop all instances')
    .option('-d,--delete', "Batch delete all tasks,if can't delete,then reset")
    .option('-r,--reset', 'Batch reset tasks')
    .option('-a,--all', 'Batch run all tasks,if task is running,then skip')
    .option('-e,--execute', 'Batch create all tasks from file and run them')
    .option('-o,--open', 'Batch start all canceled instances')
    .helpOption('-h,--help', 'Read more information')
    .action(async (options) => {
        if (Object.entries(options).length !== 0) {
            const xls = new ParseXls('./src/file/数据列表.xls', 0)
            const array = xls.readXls(1)
            const batchHttp = new BatchHttp()
            if (options.all) {
                await batchHttp.batchRunTasks(loginConfig, getConfig, runTaskConfig, checkRunningConfig)
            } else if (options.create) {
                await batchHttp.batchOnlyCreateTask(loginConfig, createTaskConfig, createKeywordConfig, array, 0, 4, 1)
            } else if (options.stop) {
                await batchHttp.batchStopInstance(loginConfig, stopInstanceConfig, getInstanceConfig)
            } else if (options.delete) {
                await batchHttp.batchDelete(loginConfig, deleteConfig, getConfig, resetConfig)
            } else if (options.reset) {
                await batchHttp.batchReset(loginConfig, resetConfig, getConfig)
            } else if (options.execute) {
                await batchHttp.batchCreateAndRun(loginConfig, createTaskConfig, runTaskConfig, createKeywordConfig, array, 0, 4, 1)
            } else if (options.open) {
                let cookie = await batchHttp.login(loginConfig)
                await batchHttp.batchRunInstance(runInstanceConfig, loginConfig, getCancelInstanceConfig)
            }
        } else {
            console.log('<options> required,add -h or --help for additional information')
        }
    }).showHelpAfterError(true)
program.parse(process.argv);

 2. package.json

"bin": {
    "run": "bin/cli.js"
  },

3. npm link 建立软链

Claude Code CLI解析:TypeScript+React+Ink+Commander.js四层架构 CLI工具是现代前端工程的关键基础设施,其本质是将API能力封装为可复用、可集成的命令行接口。理解CLI的架构原理,需从Node.js运行时、TypeScript类型系统、React组件化范式及终端UI渲染引擎(如Ink)协同机制入手。技术价值在于打通本地开发流与云服务(如Anthropic API)的低摩擦通道,支撑自动化代码生成、实时类型校验、智能错误解释等场景。本文聚焦一个典型实践案例——基于TypeScript、React、Ink和Commander.js构建的Claude Code CLI,深入拆 阅读详情

相关推荐

Node.js命令行参数处理实战:从process.argv到commander

命令行参数是Node.js CLI工具与用户交互的基础机制,其本质是操作系统向进程传递的字符串数组。理解process.argv的原始结构是掌握参数解析原理的前提,而commander等高级库则在此基础上提供类型转换、校验、子命令和自动帮助文档等工程化能力。这类工具的核心价值在于提升脚本的可复用性、可维护性与跨环境兼容性,广泛应用于自动化运维、CI/CD集成、配置管理及数据处理等场景。本文聚焦Node.js生态中主流参数解析方案的选型逻辑与生产级落地实践。

weixin_33701251的博客 374

commander.js教程笔记

commander.js是一个工具,用来构建node的命令行程序,使得能够使用自定义指令在全局命令行运行node脚本本来我们只能在脚本所在文件的根目录里通过运行脚本,通过commander构建命令行程序后,就能在任意一个目录里,比如桌面,比如用户目录,直接输入自定义的那个指令,就能直接运行脚本,更加简便。另外还有一种简便的方式,就是打包成exe文件,直接双击就能运行,但是缺点在于适应性,就是如果想要在win、linux等多个平台使用,就得分别打包,而使用命令行形式,可以轻松跨平台使用。...

bantoumingasong的博客 3269

Node.js命令行参数处理:从process.argv到commander实战指南

命令行参数是Node.js脚本实现自动化与工程化的核心能力,其本质是进程启动时操作系统向程序传递的原始字符串。理解process.argv的底层结构是掌握参数解析的前提,它揭示了参数在Shell与Node.js间的真实传递形态;在此基础上,通过minimist等轻量解析器可完成类型转换与结构化,而commander则提供完整的CLI框架能力,支持子命令、自动帮助文档与参数校验。该能力直接决定脚本是否具备生产可用性——能否被团队协作使用、集成进CI/CD、安全稳定运行。本文聚焦Node.js命令行参数处理的三

weixin_30824599的博客 478

构建可调试的AI代码助手CLI:Node.js+Git+Commander实战

CLI(命令行接口)是开发者与AI代码工具交互的基础载体,其核心原理在于将自然语言指令解析为结构化参数,并通过HTTP或本地进程调用后端模型服务。技术价值体现在轻量、可脚本化、易集成CI/CD等工程优势。典型应用场景包括代码生成、Git暂存区审查、IDE插件封装及自动化质量门禁。本文聚焦真实落地难点:Node.js环境配置(PowerShell策略、版本幻觉、镜像失效)、Git上下文驱动的命令设计,以及基于Commander与Axios构建高可调试CLI骨架——不依赖虚构npm包,而是从零打造稳定、可扩展、

angzhan5306的博客 495

Desktop Commander MCP:AI编程助手实现系统级控制的完整指南

MCP(Model Context Protocol)作为AI模型与外部工具交互的开放协议,通过定义标准化的工具注册和安全边界机制,实现了AI助手能力的系统级扩展。其技术价值在于打破传统AI编程助手局限于代码补全的边界,让模型能够安全地执行文件系统操作、终端命令和进程管理等实际任务。在应用场景上,MCP协议支持从数据分析、代码编辑到服务器部署的全流程自动化,自然收敛到Desktop Commander这一具体实现。该项目基于Claude Desktop的订阅模式,通过开源架构提供了成本优势明显的系统控制能力

weixin_33735077的博客 414

Desktop Commander MCP:让AI助手直接控制电脑终端的开源工具

Model Context Protocol (MCP) 是一种开放协议,它定义了AI模型与外部工具交互的标准方式。其核心原理是通过标准化的接口规范,让AI能够安全地调用系统级功能。这一协议的技术价值在于将AI的文本理解能力扩展到实际操作层面,实现了从对话到执行的跨越。在应用场景上,MCP特别适合开发自动化、系统管理和数据分析等需要频繁进行文件操作和命令执行的场景。Desktop Commander MCP正是基于这一协议的开源实现,它作为一个MCP服务器,让Claude、ChatGPT等AI助手能够直接执

weixin_34341117的博客 360

Commander.js 废弃功能完全指南:已弃用(Deprecated)与已移除(Removed)API 迁移手册

Commander.js 是 Node.js 生态中久负盛名的命令行接口(CLI)构建库,其核心能力都体现在 [lib/command.js](https://link.gitcode.com/i/599826a3bb97e61286bb95f67be8c126)、[lib/option.js](https://link.gitcode.com/i/415d2d80f38d489049746b13

gitblog_00860的博客 327

Desktop Commander MCP:基于MCP协议的AI桌面自动化工具详解

Model Context Protocol (MCP) 是一种新兴的AI协议标准,它定义了AI助手与外部工具系统之间的标准化通信机制。其核心原理是通过统一的接口规范,让AI能够安全、可控地调用系统级功能。在技术价值层面,MCP协议解决了AI助手与真实环境交互的标准化问题,为自动化任务执行提供了可靠基础。应用场景广泛覆盖终端命令执行、文件系统操作、代码编辑等开发工作流。Desktop Commander MCP正是基于这一协议的开源实现,它将Claude Desktop扩展为全能开发助手,支持自然语言控制电

weixin_30628077的博客 347

Cloud Commander作为中间件集成:构建企业级Node.js应用的10个技巧

Cloud Commander是一款功能强大的Web文件管理器,它集成了命令行控制台和文本编辑器,能够帮助开发者在浏览器中轻松管理服务器文件和程序。作为中间件集成到Node.js应用中,Cloud Commander可以为企业级项目提供高效的文件管理解决方案。 ## 1. 基础集成步骤:快速上手Express中间件 将Cloud Commander集成到Express应用中只需简单几步。首先确

gitblog_00944的博客 848

Ink+Commander+TS构建AI CLI工具的工程实践

CLI 工具是现代前端工程师延伸能力边界的关键载体。其核心原理在于将命令行参数解析、终端 UI 渲染与后端 API 交互分层解耦,依托 TypeScript 提供类型安全与路径映射能力,借助 Ink 实现 React 风格的终端组件化开发,配合 Commander.js 完成语义化指令调度。这类工具的技术价值不仅在于提升 AI 编程效率,更在于建立可测试、可复用、可跨平台(Node.js/Web/Electron)的核心逻辑层。典型应用场景包括 Anthropic/Claude 等大模型的本地 CLI 封装

weixin_33095355的博客 252

FTPClient使用中,碰到SocketTimeoutException 坑

ftpclient设置soTimeout无效

u010379794的博客 1950

2024年将最流行的10大JavaScript库

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取!知识点,真正体系化!**[外链图片转存中…(img-w3pWepaq-1712390585359)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,

2401_84094868的博客 998

开发板的使用

一、开发板使用学习大纲。 1、开发板组成、核心板资源,底板资源。 2、开发板连接、调试工具、串口参数配置。 3、开发板启动过程。 4、文件传输 1)使用串口传输。 上传/下载 2)使用网口传输。 上传/下载 5、临时/永久配置开发板IP地址。 6、开发板启动脚本。 二、开发板的组成。 核心板: CPU处理器: 芯片:S5P6818(三星) 内核: ARM cortex-A53 -> 八核处理器 运行内存:512MB*2=1G nandflash:4G 底板: 电源线:5V 串口...

qq_45633736的博客 2658

Roo Commander架构揭秘:CLI工具+自定义模式+共享知识系统的协同工作原理

Roo Commander是一个强大的开发工具,它像一个虚拟的专业软件开发团队一样集成在你的编辑器中,由👑 Roo Commander精心编排,通过VS Code上的Roo Code提供支持。这个创新工具通过CLI工具、自定义模式和共享知识系统的协同工作,为开发者提供了高效的技能管理和任务执行能力。 ## 系统架构概览 Roo Commander v9采用了简洁而强大的三层架构,完美结合了C

gitblog_00863的博客 936

从零到一:RJ71EN71 ModbusTCP配置的避坑指南与实战技巧

本文详细解析三菱RJ71EN71模块的ModbusTCP配置全流程,涵盖GX Works3参数设置、地址映射、通信调试等核心环节。针对工业环境中常见的IP冲突、软元件分配错误、通信超时等高频问题提供实战解决方案,帮助工程师快速构建高可靠性通信网络,避免项目延期风险。

zzz56的博客 331

STM32CubeMX定时器进阶玩法:用编码器模式实现电机转速测量(附避坑清单)

本文详细介绍了如何使用STM32CubeMX配置定时器的编码器模式实现电机转速测量,包括硬件连接、CubeMX配置关键步骤、转速计算算法及常见问题解决方案。特别针对工业控制和机器人开发中的高精度需求,提供了实用的避坑清单和优化技巧,帮助开发者高效完成项目。

joy55的博客 203

从 getopt 到 argparse/commander/cobra:命令行参数解析的友好化演进

命令行参数解析是开发 CLI 工具的基础环节,几乎所有程序员都接触过经典的 getopt 函数。它能处理简单的短选项,却难以满足现代工具对帮助信息、类型校验、子命令等复杂需求。为解决这一痛点,各语言生态涌现出更友好的参数解析方案,如 Python 的 argparse、Node.js 的 commander、Go 的 cobra。这类库采用声明式配置,将解析逻辑与业务逻辑分离,自动生成帮助文本、完成类型转换和错误提示,让开发者专注于工具的核心功能。从系统脚本到云原生 CLI,参数解析的友好化直接影响开发效率

weixin_33937778的博客 371

基于 STM32 设计的 HC05 蓝牙音箱

本项目介绍如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。该音箱可以接收来自手机或其他蓝牙设备的音频数据,并通过扬声器播放。该项目展示了如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。易于实现功能实用可扩展性强如果您需要开发一个蓝牙音箱,该项目可以作为参考。

走向CTO的路上... 2470

Midnight Commander 内置编辑器 mcedit:语法高亮文本编辑完整指南

Midnight Commander(简称 MC)是 Linux/Unix 上经典的双面板文件管理器,而它内置的 **mcedit** 文本编辑器往往被新手忽视——其实这是一款功能完整、支持**语法高亮**的终端编辑器,无需图形界面即可完成日常编码与文本处理。本文将从启动方式、语法高亮配置、常用快捷键到宏录制与代码跳转,带来一份 **mcedit 完整指南**,帮助你彻底掌握这个藏在文件管理器里的

gitblog_00233的博客 234

Unity中语法糖带来的GC问题 ——那些看起来优雅、实际上在背后偷偷生垃圾的代码

*语法糖(Syntactic Sugar)**指的是编程语言中为了让代码更简洁、易读而提供的简便写法。比如C#中的foreachlambda表达式LINQ自动属性等。语法糖本身不是坏事,但在Unity等对GC敏感的环境下,要警惕语法糖带来的隐式内存分配。合理使用语法糖,关键场合用更“丑陋”但高效的写法,才能保证游戏流畅运行。下面我将更深入地分析Unity中语法糖导致GC的原理、具体场景、检测与优化技巧,并补充一些容易忽视的细节。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 516

23、视频时间码与数字同步技术详解

本文深入解析了视频时间码与数字同步技术的核心原理及应用。涵盖线性时间码(LTC)和垂直间隔时间码(VITC)的结构与特性,详细阐述了降帧时间码的补偿机制及其在影视制作中的重要性。文章还介绍了定时参考信号(TRS)在SDTV和HDTV中的实现方式,分析了辅助数据的传输结构与发展趋势,并探讨了SDI编码技术及其在不同视频标准下的差异。通过实际应用场景和技术发展影响的剖析,全面展示了这些关键技术如何支撑现代视频系统的高效运行与持续创新。

wine的专栏 236

5.4 nodejs监听键盘事件

1、代码示例 /** * str是用户键盘输入 * key是用户输入key的对象,str === key.name * key.ctrl和key.shift默认都是false * 只有当key.ctrl为true,才会达到组合效果 */ const readline = require('readline'); readline.emitKeypressEvents(process.stdin); process.stdin.setRawMode(true); process.stdin

LetsStudy的博客 4548

旗鱼优化算法(SFO)详解:从海洋猎手到智能优化

旗鱼优化算法(SFO)是一种新型群体智能优化算法,灵感来源于旗鱼的群体捕食行为。该算法采用双种群机制,模拟旗鱼(精英个体)与沙丁鱼(普通个体)的交互过程,通过交替攻击策略实现探索与开发的平衡。核心机制包括:基于猎物密度的旗鱼位置更新、随迭代衰减的攻击力度控制、以及捕食替换机制。SFO具有参数少、全局搜索能力强等特点,在高维复杂优化问题中表现优异。算法通过模拟自然界中的群体智能行为,为解决工程优化问题提供了新思路。

qq_42212808的博客 163
上一篇: 4.8 inquirer-autocomplete-prompt
下一篇: 5.0 DataView使用说明
LetsStudy
博客等级 码龄9年 96粉丝 323原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值