Commander.jsCLI脚手架生成器Skill commander-js-scaffolder

这是一个用于快速生成基于 Commander.js 和 TypeScript 的命令行界面(CLI)应用程序脚手架的工具。它自动化创建项目结构、命令、选项、参数解析、版本管理和开发工作流,遵循 Node.js CLI 开发最佳实践,帮助开发者高效启动 CLI 项目开发。关键词:Commander.js, CLI 脚手架, TypeScript, 命令行工具, Node.js, 项目生成, 自动化构建。

后端开发 0 次安装 0 次浏览 更新于 2/23/2026

名称: commander-js-脚手架 描述: 使用 TypeScript、命令、选项和最佳实践生成 Commander.js CLI 项目结构。创建一个完整的脚手架 CLI 应用程序,准备进行开发。 允许的工具: 读取, 写入, 编辑, Bash, Glob, Grep

Commander.js 脚手架

使用 TypeScript、适当的项目结构和最佳实践生成一个完整的 Commander.js CLI 应用程序。

功能

  • 生成基于 TypeScript 的 Commander.js CLI 项目
  • 创建包含子命令和选项的命令结构
  • 设置具有类型强制的适当参数解析
  • 配置帮助文本生成
  • 实现版本管理
  • 设置构建和开发工作流

用法

当您需要以下情况时,请调用此技能:

  • 使用 Commander.js 引导一个新的 CLI 应用程序
  • 创建具有适当结构的 TypeScript CLI
  • 设置包含子命令的命令层次结构
  • 配置 CLI 选项和参数

输入

参数 类型 是否必需 描述
项目名称 字符串 CLI 项目的名称(kebab-case)
描述 字符串 CLI 的简短描述
命令 数组 要搭建脚手架的命令列表
typescript 布尔值 使用 TypeScript(默认:true)
包管理器 字符串 npm、yarn 或 pnpm(默认:npm)

命令结构

{
  "commands": [
    {
      "name": "init",
      "description": "初始化一个新项目",
      "options": [
        { "flags": "-t, --template <name>", "description": "要使用的模板" },
        { "flags": "-f, --force", "description": "覆盖现有文件" }
      ],
      "arguments": [
        { "name": "<directory>", "description": "目标目录" }
      ]
    }
  ]
}

输出结构

<项目名称>/
├── package.json
├── tsconfig.json
├── .gitignore
├── README.md
├── src/
│   ├── index.ts              # 入口点,包含 shebang
│   ├── cli.ts                # 主 CLI 设置
│   ├── commands/
│   │   ├── index.ts          # 命令导出
│   │   └── <command>.ts      # 单个命令
│   ├── utils/
│   │   ├── logger.ts         # 日志工具
│   │   └── config.ts         # 配置助手
│   └── types/
│       └── index.ts          # 类型定义
├── bin/
│   └── <项目名称>         # 编译后的二进制入口
└── tests/
    └── commands/
        └── <command>.test.ts

生成的代码模式

主 CLI 入口 (src/cli.ts)

import { Command } from 'commander';
import { version } from '../package.json';

const program = new Command();

program
  .name('<项目名称>')
  .description('<描述>')
  .version(version, '-v, --version', '显示版本号');

// 注册命令
program.addCommand(initCommand);
program.addCommand(buildCommand);

// 全局选项
program
  .option('-d, --debug', '启用调试模式')
  .option('-q, --quiet', '抑制输出');

// 错误处理
program.exitOverride();

try {
  program.parse();
} catch (err) {
  // 优雅地处理错误
}

命令模板 (src/commands/<名称>.ts)

import { Command } from 'commander';

export const <名称>Command = new Command('<名称>')
  .description('<描述>')
  .argument('<必需参数>', '必需参数描述')
  .argument('[可选参数]', '可选参数描述')
  .option('-o, --option <值>', '选项描述', '默认值')
  .action(async (必需参数, 可选参数, 选项) => {
    // 命令实现
  });

依赖项

{
  "dependencies": {
    "commander": "^12.0.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "typescript": "^5.0.0",
    "tsx": "^4.0.0",
    "vitest": "^1.0.0"
  }
}

工作流

  1. 验证输入 - 检查项目名称、命令结构
  2. 创建目录结构 - 设置文件夹和基础文件
  3. 生成 package.json - 配置项目元数据和脚本
  4. 生成 tsconfig.json - TypeScript 配置
  5. 创建 CLI 入口点 - 主程序设置
  6. 生成命令 - 单个命令文件
  7. 创建工具 - 日志记录器、配置助手
  8. 设置测试 - 命令的测试结构
  9. 初始化 git - 可选的 git 初始化

应用的最佳实践

  • 启用 TypeScript 严格模式
  • 使用 exitOverride 进行适当的错误处理
  • 一致的命令命名约定
  • 帮助文本格式化标准
  • 版本标志配置
  • 调试/详细模式支持
  • 优雅的错误消息

参考

目标流程

  • cli-应用程序引导
  • cli-命令结构设计
  • 参数解析器设置