基础项目搭建
接入 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/cg2. 创建 cmd/root 文件
为 CLI 入口准备目录和主命令文件,后续所有 commander 逻辑都写在这里。
mkdir packages/cg/src/cmd
touch packages/cg/src/cmd/root.ts3. 写入基本 commander 代码
创建 Command 实例,配置程序名、描述、版本,并用 action 绑定默认执行逻辑;program.parse() 负责解析本次运行的参数并触发对应 action。
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()。
import "./cmd/root";
...5. 使用 bun 执行入口文件
在项目根目录执行(使用 bun 运行 TypeScript 无需先编译):
bun run packages/cg/src/index.ts6. Git 提交
建议在本步骤完成后提交一次,便于与后续 prompts、chalk 改动区分。
git add .
git commit -m "feat: 初始化commander CLI工具"