My App
基础项目搭建

接入 Commander.js

用 Commander.js 构建 CLI 命令与入口

Commander.js 简介

Commander.js 是 Node.js 下常用的 CLI 框架,用来解析命令行参数、定义命令与子命令、自动生成帮助与版本信息。本步骤在已有 tsdown 项目上接入 commander,实现一个最简单的「运行即打印」的 CLI。

它提供:

  • 命令定义 — 轻松定义命令、选项和参数
  • 自动帮助 — 自动生成 --help--version
  • 选项解析 — 支持短选项(如 -v)和长选项(如 --version
  • 子命令 — 可扩展为多级子命令结构
  • 类型安全 — 对 TypeScript 支持良好

初始化步骤

1. 安装 commander

在项目根目录安装依赖。官方仓库: commander.js

npm install commander -w @repo/cg
2. 创建 cmd/root 文件

为 CLI 入口准备目录和主命令文件,后续所有 commander 逻辑都写在这里。

mkdir.sh
mkdir packages/cg/src/cmd

touch packages/cg/src/cmd/root.ts
3. 写入基本 commander 代码

创建 Command 实例,配置程序名、描述、版本,并用 action 绑定默认执行逻辑;program.parse() 负责解析本次运行的参数并触发对应 action。

src/cmd/root.ts
import { Command } from 'commander'

const program = new Command()

program
  .name('code-gen')
  .description('代码生成器 CLI 工具')
  .version('1.0.0')
  .action(() => {
    console.log('代码生成cmd工具')
  })

program.parse()
4. 在入口文件中引入 root

在项目入口(如 src/index.ts)中引入 root.ts,这样执行入口时就会执行 commander 的注册与 parse()

src/index.ts
import "./cmd/root";
...
5. 使用 bun 执行入口文件

在项目根目录执行(使用 bun 运行 TypeScript 无需先编译):

run.sh
bun run packages/cg/src/index.ts
6. Git 提交

建议在本步骤完成后提交一次,便于与后续 prompts、chalk 改动区分。

git.sh
git add .
git commit -m "feat: 初始化commander CLI工具"

On this page