mcpField
T
tsdown

tsdown

github.com/oakoss開発2186 回インストール12 週間前に更新
リポジトリ

tsdown について

tsdownは、Rolldownを基盤とするTypeScriptおよびJavaScriptライブラリ向けバンドラーです。複数のモジュール形式、型宣言ファイル、package.jsonのエクスポート設定を扱い、ライブラリ開発者のビルドを支援します。

主な機能

  1. 01ESM、CJS、IIFE、UMD形式で出力
  2. 02TypeScriptの型宣言ファイルを生成
  3. 03package.jsonのエクスポートを生成
  4. 04ファイル監視と自動再ビルド
  5. 05パッケージ検証とサイズレポート

活用シーン

  1. 01npm向けTypeScriptライブラリのバンドル
  2. 02ESMとCJS形式でのパッケージ公開
  3. 03監視モードでのコマンドラインツール構築

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/tsdownを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-features.md
configuration.md
declaration-files.md

詳細

tsdown

概要

tsdown は、Rolldown(Rust ベース)上に構築された洗練されたライブラリバンドラーで、TypeScript および JavaScript ライブラリをビルドするための、すぐに使える包括的なソリューションを提供します。ソースの変換、複数の出力形式(ESM、CJS、IIFE、UMD)、TypeScript 宣言ファイルの生成、妥当なデフォルト設定による package.json の exports フィールド生成に対応しています。

使用するケース: npm 向けの TypeScript ライブラリのビルド、宣言ファイルの生成、ESM/CJS 両対応パッケージの作成、CLI ツールのバンドル、ウォッチモードでのライブラリ開発、tsup からの移行。

使用しないケース: アプリケーションのバンドル(Vite/Rolldown を直接使用)、サーバーサイドレンダリングのフレームワーク(フレームワークのバンドラーを使用)、Webpack 固有の機能が必要なプロジェクト、バンドル不要のシンプルなスクリプト。

クイックリファレンス

パターンAPI主なポイント
基本的なビルドnpx tsdownsrc/index.ts エントリを自動検出
設定ファイルtsdown.config.ts型安全性のために defineConfig() を使用
エントリポイントentry: ['src/index.ts']名前付きエントリには文字列、配列、またはオブジェクトを指定
出力形式format: ['esm', 'cjs']ESM、CJS、IIFE、UMD に対応
宣言ファイルdts: truepackage.json の types フィールドから自動検出
拡張子の固定fixedExtension: true.mjs/.cjs および .d.mts/.d.cts を強制
外部モジュールexternal: ['react']デフォルトで node_modules を外部として扱う
依存関係のバンドルnoExternal: ['lodash-es']特定の依存関係を強制的にバンドル
ターゲットtarget: 'node18'ES または Node のバージョン
プラットフォームplatform: 'node'node、browser、または neutral
圧縮minify: trueツリーシェイキングは別途有効化
ツリーシェイキングtreeshake: trueデッドコードを削除
ソースマップsourcemap: trueインラインまたは外部ソースマップ
ウォッチモードtsdown --watchファイル変更時に自動で再ビルド
出力のクリーンアップclean: trueビルド前に出力ディレクトリを削除
検証--publint --attwビルド後にパッケージの品質をチェック
サイズレポート--reportgzip/brotli の統計情報付きでバンドルサイズを表示
複数の設定defineConfig([...])出力ごとに設定の配列を指定
動的な設定defineConfig((opts) => {})CLI オプションを受け取る関数
プログラム APIimport { build }Node.js スクリプトで使用
バナー/フッターbanner: { js: '...' }出力ファイルの先頭/末尾に追加
onSuccess フックonSuccess: async () => {}ビルド成功後に実行
Node プロトコルnodeProtocol: true組み込みモジュールのインポートに node: プレフィックスを追加/削除

よくある間違い

間違い正しい設定
2つの形式で公開する際に fixedExtension を設定しないESM と CJS の両方を公開する場合は、.mjs/.cjs に fixedExtension: true を使用します
すべての node_modules をライブラリの出力にバンドルする依存関係はデフォルトで外部化されます。特定の依存関係にのみ noExternal を使用します
TypeScript を設定せずに dts: true を使用する適切な compilerOptions を含む tsconfig.json があることを確認します
モダンな構文に対して target を低く設定しすぎるサポートする Node/ブラウザーの最低バージョンに合わせて target を設定します
package.json に types フィールドがない宣言ファイルを解決できるよう、types または exports の types 条件を追加します
出力形式を変更する前に出力先をクリーンアップしない前回のビルドの古いファイルを残さないよう、clean: true を使用します
Node の組み込みモジュールを external にインラインで指定するNode の組み込みモジュール(node:fs など)は、platform: 'node' では自動的に外部化されます
CI で対話型 CLI フラグを使用するCI ビルドには設定ファイルまたは非対話型 CLI フラグを使用します

委任

  • ビルド設定のレビュー:Task エージェントを使用して、tsdown の設定が正しいか分析します
  • パッケージの公開:Explore エージェントを使用して、package.json の exports フィールドと types フィールドを確認します
  • tsup からの移行:Task エージェントを使用して、tsup のオプションを tsdown の相当するオプションに対応付けます

参考資料

コメント