- バンドラーなしでTypeScriptライブラリをESM/CJSとして簡単にビルドするCLIツール
- Zodの内部ビルドツールとして始まり、現在はすべてのTypeScriptライブラリ向けの汎用ツールとして公開
- **tsc(TypeScriptコンパイラ)**を活用し、拡張子リライト、デュアルモジュールビルド、exports自動生成など、バンドラーなしでも本番レベルのビルドをサポート
- 迅速なデプロイ・CI/CD自動化に適しており、ライブラリ形態のパッケージ(ESM/CJS同時配布)が必要な場合に強く推奨
- 型宣言/exports/binの自動化により、保守・デプロイ時のヒューマンエラーを防止
特徴と主な機能
- デュアルモジュールビルド: ESM(.js)とCJS(.cjs)ファイルを一度に生成
- バンドラーや追加設定不要: webpack、esbuild、rollupなどを使用せずに動作し、必要なのは
package.jsonとtsconfig.jsonのみ
- エントリポイントの宣言的管理:
package.json#/zshyでentrypoint、サブパス、ワイルドカードなどを直接指定
- exports自動生成: ビルド後に
package.jsonの"exports"フィールドを自動で最新化
- ファイル構造の自由: src/out構造を固定で要求せず、importの拡張子も自由に使用可能
- アセットハンドリング: JS以外のファイルも自動コピー
- .tsx対応: tsconfigに従って.js/.cjs/.mjsなどに変換
- CLI対応: binエントリポイントを指定すると、package.json#/binを自動生成
- 遅くなる場合あり: tscの型チェックと変換に注力するため、ビルド速度より信頼性・正確性を重視
主な動作原理と差別化ポイント
- TypeScript Compiler APIで拡張子(.js/.cjs/.mjs)とimportパスを自動リライト
- entrypointごとにESM/CJSファイル、型宣言(.d.ts/.d.cts)を同時生成
- CLI用binエントリポイントのサポート: zshyがpackage.json#/binへパスを自動作成し、shebangもサポート
- ファイル構造の自由: tsconfigのoutDirのみ指定すればよい
- package.json#/exportsはビルド時に自動作成・上書き
高度な機能と互換性
- ワイルドカード/サブパス対応:
./plugins/*のようなパス宣言が可能で、実際のsrcディレクトリ内のすべてのサブパスを自動ビルド
- tsconfig.jsonの大半のオプションに準拠(一部のモジュール関連オプションはCJS/ESMビルドごとに上書き)
- import拡張子なしコードも許可(
from "./utils"など)、ビルド時に拡張子を自動補正
- React Native/legacy環境もflat build modeで対応可能(パッケージルートへビルド出力し、exportsなしでindex.jsにアクセス)
- カスタムexports condition(
sourceDialects)対応: source条件などを追加指定可能
競合ツールとの比較優位性
- tshy/tsup/tsdownなどと異なり、別ディレクトリ/パッケージスタブを生成せず、単一outDirにすべてのビルド結果を整理
- TypeScript公式APIを活用し、Node.js/ESM/CJS/TSの最新標準フローとの互換性を最大化
- 追加のconfigやバンドラーを必要とせず、単一コマンドのみでライブラリレベルのTypeScriptパッケージを配布可能
まだコメントはありません。