本文へ移動
cccskills
無料GitHub で公開

setup-tsup

Set up tsup (esbuild-based bundler) for a TypeScript package. Use when you need single-file bundled output, faster builds, and better startup time for Node.js CLIs or libraries. Covers tsup config, bin entry point, package.json scripts, and keeping tsc for type-checking only.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md2.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Set Up tsup Build

Goal

Replace or add tsup as the build tool for a TypeScript package. Keep tsc --noEmit for type-checking only.

Why

  • Single-file bundled output = 2-5x faster startup (fewer fs reads during module resolution)
  • Tree-shakes unused code from dependencies
  • esbuild-based = sub-second builds vs multi-second tsc

Steps

1. Install tsup

pnpm add -D tsup

2. Create tsup.config.ts

import { defineConfig } from 'tsup'

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm'],
  target: 'node22',
  clean: true,
  splitting: false,
  sourcemap: true,
  dts: false,
  // For CLIs: add shebang
  banner: {
    js: '#!/usr/bin/env node',
  },
  // Native/dynamic deps that shouldn't be bundled
  external: [],
})

For libraries (not CLIs), remove the banner and consider dts: true for declaration files.

3. Update package.json scripts

{
  "scripts": {
    "build": "tsup",
    "dev": "tsup --watch",
    "ts:check": "tsc --noEmit"
  }
}

4. Update bin entry point (CLIs only)

The bin file should point to the tsup output. tsup outputs to dist/ by default:

  • Verify the bin field references dist/index.js (or dist/index.mjs)
  • Since tsup adds the shebang via banner, the bin file can point directly to the bundled output

5. Verify

pnpm build           # Should produce dist/index.js (single file)
pnpm ts:check        # Type checking still works
node dist/index.js --help  # CLI works (if applicable)

6. Update .gitignore

Ensure dist/ is in .gitignore.

Gotchas

  • If any dependency uses __dirname or require.resolve, tsup may need those deps in external
  • Dynamic import() calls are preserved by esbuild — this is fine
  • Keep prepare or prepublishOnly script as pnpm build for npm publish workflow
  • For ESM packages, ensure "type": "module" in package.json

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Add --json flag to CLI commands for machine-readable output on stdout. Generic pattern for any CLI tool, enabling piping to jq and CI/CD integration while keeping human-readable output on stderr.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

Add shell completion support via a 'completion' subcommand for bash, zsh, and fish. Generic pattern for any Commander.js CLI, with static and dynamic completion examples.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

Add zod schema validation for CLI options and YAML/JSON config files. Generic pattern for runtime validation with type-safe parsing and clear error messages in any Commander.js CLI.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

Set up @changesets/cli for semantic versioning, CHANGELOG generation, and npm publishing in a monorepo or single package. Covers init, config, contributor workflow, GitHub Actions release automation, and npm provenance.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

Add automatic CI/CD environment detection using ci-info package. Generic pattern for any CLI tool that needs to adapt behavior (prompts, output, integrations) based on whether it's running in CI.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

Polish CLI user experience with @clack/prompts for interactive flows, update-notifier for version awareness, and enhanced Commander.js help text with examples and colors. Generic patterns for any Node.js CLI.

日本語の概要は準備中です。原文の説明を表示しています。

krafteq/infraglue22026年7月8日 更新

krafteq のスキルをすべて見る

このスキルの問題を報告する