mcpField
T
tanstack-cli

tanstack-cli

github.com/oakossDevelopment21109 installsUpdated 12w ago
Repository

About tanstack-cli

tanstack-cli provides build, versioning, and publishing tooling for JavaScript/TypeScript packages that follow TanStack conventions. It uses Vite for ESM/CJS output and type generation, with release versions driven by Conventional Commits.

Key features

  1. 01Vite library build configuration
  2. 02Generate ESM/CJS and type declarations
  3. 03Detect external dependencies
  4. 04Version releases from Conventional Commits
  5. 05Configure stable and prerelease branches

Use cases

  1. 01Build JavaScript/TypeScript libraries following TanStack conventions
  2. 02Generate dual-module output and declarations for packages
  3. 03Automate package releases from commit history

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill tanstack-cli

After installing, type/tanstack-cliin Claude Code to confirm it loaded.

Bundled filesreferences/configuration.mdreferences/publishing.md

Details

From the project README

TanStack Config

Overview

TanStack Config provides opinionated tooling to build, version, and publish JavaScript/TypeScript packages with minimal configuration and consistent results. It uses Vite for library builds with automatic dual ESM/CJS output and type generation, plus automated publishing with conventional-commit-based versioning.

When to use: Building TanStack libraries or packages that follow TanStack conventions, contributing to TanStack open-source projects, setting up dual ESM/CJS library builds with Vite, automating package publishing with conventional commits.

When NOT to use: Application builds (use framework-specific tooling), non-library projects, projects not using pnpm, projects that need non-Vite build pipelines.

Quick Reference

PatternAPI / PackageKey Points
Vite build configtanstackViteConfig() from @tanstack/vite-configMerge with defineConfig via mergeConfig
Entry pointentry: './src/index.ts'Single file or array of entry files
Source directorysrcDir: './src'Used for declaration file generation
CJS outputcjs: true (default)Generates .cjs and .d.cts alongside ESM
External depsexternalDeps: [/^@internal\//]Auto-detected from package.json, extend with patterns
Bundled depsbundledDeps: ['tiny-invariant']Bundle instead of externalize
Exclude from typesexclude: ['./src/**/*.test.ts']Patterns to skip during type generation
Custom tsconfigtsconfigPath: './tsconfig.build.json'Override default tsconfig for builds
Declaration hookbeforeWriteDeclarationFile(path, content)Transform .d.ts content before write
Publish automationpublish() from @tanstack/publish-configConventional commits drive versioning
Branch configsbranchConfigs: { main, beta, alpha }Control prerelease and stable channels
Package listpackages: [{ name, packageDir }]Monorepo package definitions
Build scriptvite build && publint --strictStandard build with strict linting

Common Mistakes

MistakeCorrect Pattern
Missing "type": "module" in package.jsonSet "type": "module" for ESM-first builds
Using defineConfig alone without mergeConfigUse mergeConfig(defineConfig({...}), tanstackViteConfig({...}))
Forgetting entry or srcDir optionsBoth are required for tanstackViteConfig to work
Missing exports field in package.jsonDefine import and require conditions with types
Not awaiting publish() promiseHandle with .then() and .catch() for error reporting
Using npm or yarn instead of pnpmpnpm is the only supported package manager
Omitting publint --strict from build scriptAdd publint --strict after vite build to catch packaging issues
Setting tag without v prefixManual version tags must start with v (e.g., v1.0.0)
Wrong commit type for release levelfix/refactor/perf = patch, feat = minor, BREAKING CHANGE = major

Requirements

  • Node.js v18.17+
  • pnpm v8+
  • Git CLI
  • GitHub CLI (pre-installed on GitHub Actions)
  • Vite (peer dependency for build config)
  • publint (recommended for build validation)

Delegation

  • Build configuration review: Use Task agent to verify Vite config and package.json exports
  • Publishing workflow setup: Use Explore agent to check CI/CD integration patterns
  • Package validation: Run publint --strict after builds to catch packaging issues

References

Comments

Markdown supported