9 ポイント 投稿者 xguru 2025-08-11 | まだコメントはありません。 | WhatsAppで共有
  • バンドラーなしでTypeScriptライブラリをESM/CJSとして簡単にビルドするCLIツール
  • Zodの内部ビルドツールとして始まり、現在はすべてのTypeScriptライブラリ向けの汎用ツールとして公開
  • **tsc(TypeScriptコンパイラ)**を活用し、拡張子リライト、デュアルモジュールビルド、exports自動生成など、バンドラーなしでも本番レベルのビルドをサポート
  • 迅速なデプロイ・CI/CD自動化に適しておりライブラリ形態のパッケージ(ESM/CJS同時配布)が必要な場合に強く推奨
  • 型宣言/exports/binの自動化により、保守・デプロイ時のヒューマンエラーを防止

特徴と主な機能

  • デュアルモジュールビルド: ESM(.js)とCJS(.cjs)ファイルを一度に生成
  • バンドラーや追加設定不要: webpack、esbuild、rollupなどを使用せずに動作し、必要なのはpackage.jsontsconfig.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 conditionsourceDialects)対応: source条件などを追加指定可能

競合ツールとの比較優位性

  • tshy/tsup/tsdownなどと異なり、別ディレクトリ/パッケージスタブを生成せず、単一outDirにすべてのビルド結果を整理
  • TypeScript公式APIを活用し、Node.js/ESM/CJS/TSの最新標準フローとの互換性を最大化
  • 追加のconfigやバンドラーを必要とせず、単一コマンドのみでライブラリレベルのTypeScriptパッケージを配布可能

まだコメントはありません。

まだコメントはありません。