关于 tanstack-cli
tanstack-cli 提供 TanStack 风格 JavaScript/TypeScript 包的构建、版本管理与发布工具,面向库和包开发者。它基于 Vite 生成 ESM/CJS 输出和类型声明,并可按 Conventional Commits 自动确定发布版本。
主要功能
- 01Vite 库构建配置
- 02生成 ESM/CJS 与类型声明
- 03自动识别外部依赖
- 04按 Conventional Commits 管理版本
- 05配置稳定版与预发布分支
适用场景
- 01构建 TanStack 风格的 JavaScript/TypeScript 库
- 02为库生成双模块格式和类型声明
- 03通过提交记录自动化包发布
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill tanstack-cli安装后在 Claude Code 中输入/tanstack-cli确认已加载。
附带文件references/configuration.mdreferences/publishing.md
详细介绍
TanStack Config
概述
TanStack Config 提供开箱即用的工具,用于构建、管理版本并发布 JavaScript/TypeScript 包,只需极少配置即可获得一致的结果。它使用 Vite 构建库,自动生成 ESM/CJS 双格式输出和类型文件,并支持基于约定式提交自动发布和管理版本。
适用场景: 构建遵循 TanStack 约定的 TanStack 库或包,为 TanStack 开源项目做贡献,使用 Vite 设置 ESM/CJS 双格式库构建,以及通过约定式提交自动发布包。
不适用场景: 应用构建(请使用框架专用工具)、非库项目、不使用 pnpm 的项目,以及需要使用非 Vite 构建流程的项目。
快速参考
| 模式 | API / 包 | 要点 |
|---|---|---|
| Vite 构建配置 | tanstackViteConfig() from @tanstack/vite-config | 通过 mergeConfig 与 defineConfig 合并 |
| 入口点 | entry: './src/index.ts' | 单个文件或入口文件数组 |
| 源码目录 | srcDir: './src' | 用于生成声明文件 |
| CJS 输出 | cjs: true(默认) | 与 ESM 一同生成 .cjs 和 .d.cts |
| 外部依赖 | externalDeps: [/^@internal\//] | 从 package.json 自动检测,并可通过模式扩展 |
| 打包依赖 | bundledDeps: ['tiny-invariant'] | 打包而非外部化 |
| 从类型中排除 | exclude: ['./src/**/*.test.ts'] | 类型生成时跳过的模式 |
| 自定义 tsconfig | tsconfigPath: './tsconfig.build.json' | 为构建指定非默认的 tsconfig |
| 声明文件钩子 | beforeWriteDeclarationFile(path, content) | 写入前转换 .d.ts 内容 |
| 发布自动化 | publish() from @tanstack/publish-config | 通过约定式提交管理版本 |
| 分支配置 | branchConfigs: { main, beta, alpha } | 控制预发布和稳定版渠道 |
| 包列表 | packages: [{ name, packageDir }] | Monorepo 包定义 |
| 构建脚本 | vite build && publint --strict | 使用严格检查的标准构建 |
常见错误
| 错误 | 正确做法 |
|---|---|
在 package.json 中缺少 "type": "module" | 对于 ESM 优先的构建,设置 "type": "module" |
仅使用 defineConfig,未使用 mergeConfig | 使用 mergeConfig(defineConfig({...}), tanstackViteConfig({...})) |
忘记设置 entry 或 srcDir 选项 | tanstackViteConfig 需要这两个选项才能正常工作 |
在 package.json 中缺少 exports 字段 | 使用类型定义 import 和 require 条件 |
未等待 publish() Promise | 使用 .then() 和 .catch() 处理,以便报告错误 |
| 使用 npm 或 yarn,而不是 pnpm | pnpm 是唯一受支持的包管理器 |
在构建脚本中省略 publint --strict | 在 vite build 后添加 publint --strict,以发现打包问题 |
设置 tag 时未加 v 前缀 | 手动版本标签必须以 v 开头(例如,v1.0.0) |
| 发布级别对应的提交类型错误 | fix/refactor/perf = 补丁版本,feat = 次要版本,BREAKING CHANGE = 主要版本 |
要求
- Node.js v18.17+
- pnpm v8+
- Git CLI
- GitHub CLI(已预装在 GitHub Actions 中)
- Vite(构建配置的对等依赖)
- publint(推荐用于构建验证)
委派
- 构建配置审查:使用
Taskagent 验证 Vite 配置和package.json导出 - 发布工作流设置:使用
Exploreagent 检查 CI/CD 集成模式 - 包验证:构建后运行
publint --strict,以发现打包问题
参考资料
评论
支持 Markdown