tanstack-cli について
tanstack-cliは、TanStackの規約に沿ったJavaScript/TypeScriptパッケージのビルド、バージョン管理、公開を支援します。ViteによるESM/CJS出力と型生成に加え、Conventional Commitsに基づくリリースに対応します。
主な機能
- 01Viteライブラリビルド設定
- 02ESM/CJSと型宣言の生成
- 03外部依存関係の検出
- 04Conventional Commitsによるバージョン管理
- 05安定版・プレリリースブランチの設定
活用シーン
- 01TanStack規約に沿った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 の自動デュアル出力と型生成に加え、Conventional Commits に基づくバージョン管理を用いた公開の自動化を実現します。
使用する場面: TanStack の規約に沿ったライブラリやパッケージをビルドする場合、TanStack のオープンソースプロジェクトに貢献する場合、Vite で ESM/CJS のデュアルライブラリビルドを設定する場合、Conventional Commits を使用してパッケージ公開を自動化する場合。
使用しない場面: アプリケーションのビルド(フレームワーク固有のツールを使用してください)、ライブラリ以外のプロジェクト、pnpm を使用していないプロジェクト、Vite 以外のビルドパイプラインが必要なプロジェクト。
クイックリファレンス
| パターン | API/パッケージ | 主なポイント |
|---|---|---|
| Vite ビルド設定 | @tanstack/vite-config の tanstackViteConfig() | mergeConfig を使って defineConfig とマージします |
| エントリーポイント | entry: './src/index.ts' | 単一ファイルまたはエントリーファイルの配列 |
| ソースディレクトリ | srcDir: './src' | 宣言ファイルの生成に使用します |
| CJS 出力 | cjs: true (default) | 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 の内容を変換します |
| 公開の自動化 | @tanstack/publish-config の publish() | Conventional Commits に基づいてバージョンを管理します |
| ブランチ設定 | branchConfigs: { main, beta, alpha } | プレリリースおよび安定版のチャンネルを制御します |
| パッケージ一覧 | packages: [{ name, packageDir }] | モノレポのパッケージ定義 |
| ビルドスクリプト | vite build && publint --strict | 厳格なリンティングを行う標準ビルド |
よくある間違い
| 間違い | 正しいパターン |
|---|---|
package.json に "type": "module" がない | ESM を優先するビルドでは "type": "module" を設定します |
mergeConfig を使わずに defineConfig だけを使う | mergeConfig(defineConfig({...}), tanstackViteConfig({...})) を使います |
entry または srcDir オプションを忘れる | tanstackViteConfig を動作させるには、両方が必要です |
package.json に exports フィールドがない | types を含む import と require の条件を定義します |
publish() のプロミスを await しない | エラーを報告できるように .then() と .catch() で処理します |
| pnpm ではなく npm や yarn を使う | サポートされているパッケージマネージャーは pnpm のみです |
ビルドスクリプトに publint --strict を含めない | パッケージの問題を検出するため、vite build の後に publint --strict を追加します |
v のプレフィックスなしで tag を設定する | 手動で付けるバージョンタグは v で始める必要があります(例:v1.0.0) |
| リリースレベルに対して誤ったコミット種別を使う | fix/refactor/perf = パッチ、feat = マイナー、BREAKING CHANGE = メジャー |
要件
- Node.js v18.17+
- pnpm v8+
- Git CLI
- GitHub CLI(GitHub Actions にプリインストールされています)
- Vite(ビルド設定のピア依存関係)
- publint(ビルドの検証に推奨)
委任
- ビルド設定のレビュー:
Taskエージェントを使って、Vite の設定とpackage.jsonのエクスポートを確認します - 公開ワークフローの設定:
Exploreエージェントを使って、CI/CD の統合パターンを確認します - パッケージの検証:ビルド後に
publint --strictを実行して、パッケージの問題を検出します
参考資料
コメント
Markdown 対応