Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

tsdown

TypeScriptおよびJavaScriptライブラリをRolldownの超高速エンジンでバンドルします。ライブラリのビルド、型宣言の生成、複数フォーマットへのバンドル、またはtsupからの移行時に活用してください。

description の原文を見る

Bundle TypeScript and JavaScript libraries with blazing-fast speed powered by Rolldown. Use when building libraries, generating type declarations, bundling for multiple formats, or migrating from tsup.

SKILL.md 本文

tsdown - エレガントなライブラリバンドラー

Rolldown と Oxc によるパワフルな、超高速の TypeScript/JavaScript ライブラリバンドラー。

使用場面

  • npm 用の TypeScript/JavaScript ライブラリ構築
  • TypeScript 宣言ファイル (.d.ts) の生成
  • 複数フォーマット (ESM, CJS, IIFE, UMD) へのバンドル
  • ツリーシェイキングとミニフィケーションによるバンドル最適化
  • tsup からの最小限の変更での移行
  • React、Vue、Solid、Svelte コンポーネントライブラリの構築

クイックスタート

# インストール
pnpm add -D tsdown

# 基本的な使い方
npx tsdown

# 設定ファイル付き
npx tsdown --config tsdown.config.ts

# ウォッチモード
npx tsdown --watch

# tsup からの移行
npx tsdown-migrate

基本設定

import { defineConfig } from 'tsdown'

export default defineConfig({
  entry: ['./src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
  clean: true,
})

コアリファレンス

トピック説明リファレンス
はじめにインストール、初めてのバンドル、CLI の基本guide-getting-started
設定ファイル設定ファイル形式、複数設定、ワークスペースoption-config-file
CLI リファレンスすべての CLI コマンドとオプションreference-cli
tsup からの移行移行ガイドと互換性に関する注記guide-migrate-from-tsup
プラグインRolldown、Rollup、Unplugin サポートadvanced-plugins
フックカスタムロジック用のライフサイクルフックadvanced-hooks
プログラマティック APINode.js スクリプトからのビルドadvanced-programmatic
Rolldown オプションRolldown に直接オプションを渡すadvanced-rolldown-options
CI 環境CI 検出、'ci-only' / 'local-only'advanced-ci

ビルドオプション

オプション使用方法リファレンス
エントリーポイントentry: ['src/*.ts', '!**/*.test.ts']option-entry
出力フォーマットformat: ['esm', 'cjs', 'iife', 'umd']option-output-format
出力ディレクトリoutDir: 'dist'outExtensionsoption-output-directory
型宣言dts: truedts: { sourcemap, compilerOptions, vue }option-dts
ターゲット環境target: 'es2020'target: 'esnext'option-target
プラットフォームplatform: 'node'platform: 'browser'option-platform
ツリーシェイキングtreeshake: true、カスタムオプションoption-tree-shaking
ミニフィケーションminify: trueminify: 'dce-only'option-minification
ソースマップsourcemap: true'inline''hidden'option-sourcemap
ウォッチモードwatch: true、ウォッチオプションoption-watch-mode
クリーニングclean: true、クリーンパターンoption-cleaning
ログレベルlogLevel: 'silent'failOnWarn: falseoption-log-level

依存関係の処理

機能使用方法リファレンス
バンドルしないdeps: { neverBundle: ['react', /^@myorg\//] }option-dependencies
常にバンドルdeps: { alwaysBundle: ['dep-to-bundle'] }option-dependencies
バンドルのみdeps: { onlyBundle: ['cac', 'bumpp'] } - ホワイトリストoption-dependencies
node_modules をスキップdeps: { skipNodeModulesBundle: true }option-dependencies
自動外部化ピア/依存関係の自動外部化option-dependencies

出力強化

機能使用方法リファレンス
Shimsshims: true - ESM/CJS 互換性を追加option-shims
CJS デフォルトcjsDefault: true (デフォルト) / falseoption-cjs-default
パッケージエクスポートexports: true - exports フィールドを自動生成option-package-exports
CSS 処理[実験的] css: { ... } — プリプロセッサー、Lightning CSS、PostCSS、コード分割を備えた完全なパイプライン; @tsdown/css が必要option-css
CSS インジェクトcss: { inject: true } — JS 出力に CSS インポートを保持option-css
アンバンドルモードunbundle: true - ディレクトリ構造を保持option-unbundle
ルートディレクトリroot: 'src' - 出力ディレクトリマッピングを制御option-root
実行可能ファイル[実験的] exe: true - スタンドアロン実行可能ファイルとしてバンドル、@tsdown/exe でクロスプラットフォーム対応option-exe
パッケージ検証publint: trueattw: true - パッケージを検証option-lint

フレームワークとランタイムのサポート

フレームワークガイドリファレンス
ReactJSX 変換、React Compilerrecipe-react
VueSFC サポート、JSXrecipe-vue
SolidSolidJS JSX 変換recipe-solid
SvelteSvelte コンポーネントライブラリ (ソース配布推奨)recipe-svelte
WASMrolldown-plugin-wasm 経由の WebAssembly モジュールrecipe-wasm

よくあるパターン

基本的なライブラリバンドル

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
  clean: true,
})

複数のエントリーポイント

export default defineConfig({
  entry: {
    index: 'src/index.ts',
    utils: 'src/utils.ts',
    cli: 'src/cli.ts',
  },
  format: ['esm', 'cjs'],
  dts: true,
})

ブラウザライブラリ (IIFE/UMD)

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['iife'],
  globalName: 'MyLib',
  platform: 'browser',
  minify: true,
})

React コンポーネントライブラリ

export default defineConfig({
  entry: ['src/index.tsx'],
  format: ['esm', 'cjs'],
  dts: true,
  deps: {
    neverBundle: ['react', 'react-dom'],
  },
  inputOptions: {
    jsx: { runtime: 'automatic' },
  },
})

ディレクトリ構造を保持

export default defineConfig({
  entry: ['src/**/*.ts', '!**/*.test.ts'],
  unbundle: true, // ファイル構造を保持
  format: ['esm'],
  dts: true,
})

CI 対応設定

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
  failOnWarn: 'ci-only',  // オプトイン: CI での警告で失敗
  publint: 'ci-only',
  attw: 'ci-only',
})

WASM サポート

import { wasm } from 'rolldown-plugin-wasm'
import { defineConfig } from 'tsdown'

export default defineConfig({
  entry: ['src/index.ts'],
  plugins: [wasm()],
})

CSS と Sass 付きライブラリ

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
  target: 'chrome100',
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "src/styles/variables" as *;`,
      },
    },
  },
})

スタンドアロン実行可能ファイル

export default defineConfig({
  entry: ['src/cli.ts'],
  exe: true,
})

クロスプラットフォーム実行可能ファイル (@tsdown/exe が必要)

export default defineConfig({
  entry: ['src/cli.ts'],
  exe: {
    targets: [
      { platform: 'linux', arch: 'x64', nodeVersion: '25.7.0' },
      { platform: 'darwin', arch: 'arm64', nodeVersion: '25.7.0' },
      { platform: 'win', arch: 'x64', nodeVersion: '25.7.0' },
    ],
  },
})

フック付き高度な設定

export default defineConfig({
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
  hooks: {
    'build:before': async (context) => {
      console.log('Building...')
    },
    'build:done': async (context) => {
      console.log('Build complete!')
    },
  },
})

設定機能

複数の設定

複数のビルド設定にはアレイをエクスポート:

export default defineConfig([
  {
    entry: ['src/index.ts'],
    format: ['esm', 'cjs'],
    dts: true,
  },
  {
    entry: ['src/cli.ts'],
    format: ['esm'],
    platform: 'node',
  },
])

条件付き設定

動的な設定にはファンクションを使用:

export default defineConfig((options) => {
  const isDev = options.watch
  return {
    entry: ['src/index.ts'],
    format: ['esm', 'cjs'],
    minify: !isDev,
    sourcemap: isDev,
  }
})

ワークスペース/モノレポ

複数のパッケージを構築するにはグロブパターンを使用:

export default defineConfig({
  workspace: 'packages/*',
  entry: ['src/index.ts'],
  format: ['esm', 'cjs'],
  dts: true,
})

CLI クイックリファレンス

# 基本コマンド
tsdown                          # 1 回ビルド
tsdown --watch                  # ウォッチモード
tsdown --config custom.ts       # カスタム設定
npx tsdown-migrate              # tsup から移行

# 出力オプション
tsdown --format esm,cjs        # 複数フォーマット
tsdown -d lib                  # カスタム出力ディレクトリ (--out-dir)
tsdown --minify                # ミニフィケーション有効化
tsdown --dts                   # 宣言ファイル生成
tsdown --exe                   # スタンドアロン実行可能ファイルでバンドル
tsdown --unbundle              # バンドルレスモード

# エントリーオプション
tsdown src/index.ts            # 単一エントリー
tsdown src/*.ts                # グロブパターン
tsdown src/a.ts src/b.ts       # 複数エントリー

# ワークスペース / モノレポ
tsdown -W                      # ワークスペースモード有効化
tsdown -W -F my-package        # 特定パッケージをフィルター
tsdown --filter /^pkg-/        # 正規表現でフィルター

# 開発
tsdown --watch                 # ウォッチモード
tsdown --sourcemap             # ソースマップ生成
tsdown --clean                 # 出力ディレクトリをクリーン
tsdown --from-vite             # Vite 設定を再利用
tsdown --tsconfig tsconfig.build.json  # カスタム tsconfig

ベストプラクティス

  1. TypeScript ライブラリ用の型宣言を常に生成:

    { dts: true }
    
  2. 依存関係を外部化して不要なコードのバンドルを回避:

    { deps: { neverBundle: [/^react/, /^@myorg\//] } }
    
  3. ツリーシェイキングを使用して最適なバンドルサイズを実現:

    { treeshake: true }
    
  4. 本番ビルド用にミニフィケーション有効化:

    { minify: true }
    
  5. ESM/CJS 互換性向上のため Shims を追加:

    { shims: true }  // __dirname、__filename などを追加
    
  6. package.json exports を自動生成:

    { exports: true }  // 適切な exports フィールドを生成
    
  7. 開発中は ウォッチモード を使用:

    tsdown --watch
    
  8. 多くのファイルを含むユーティリティ向けに構造を保持:

    { unbundle: true }  // ディレクトリ構造を保持
    
  9. 公開前に CI でパッケージを検証:

    { publint: 'ci-only', attw: 'ci-only' }
    

リソース

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
antfu
リポジトリ
antfu/skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/antfu/skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: antfu · antfu/skills · ライセンス: MIT