9 Punkte von xguru 2025-08-11 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Ein CLI-Tool, mit dem sich TypeScript-Bibliotheken ohne Bundler problemlos als ESM/CJS bauen lassen
  • Als internes Build-Tool von Zod gestartet und heute als universelles Tool für alle TypeScript-Bibliotheken verfügbar
  • Mit tsc (TypeScript-Compiler) werden Erweiterungs-Umschreibungen, Dual-Module-Builds und automatische Exports-Unterstützung realisiert, sodass auch ohne Bundler produktionstaugliche Builds möglich sind
  • Geeignet für schnellen Rollout und CI/CD-Automatisierung und stark empfohlen, wenn ein Bibliotheks-Paket mit paralleler ESM/CJS-Bereitstellung aufgebaut werden soll
  • Durch die Automatisierung von Typdeklarationen, Exports und bin wird das Risiko von Wartungs- und Veröffentlichungsfehlern reduziert

Merkmale und Hauptfunktionen

  • Dual-Module-Build: Erzeugt gleichzeitig ESM(.js)- und CJS(.cjs)-Dateien
  • Kein Bundler/keine zusätzliche Konfiguration nötig: Funktioniert ohne webpack, esbuild, rollup usw.; benötigt werden nur package.json und tsconfig.json
  • Deklaratives Management von Entry Points: entrypoint, subpath und wildcard können direkt in package.json#/zshy festgelegt werden
  • Automatische Exports: Aktualisiert nach dem Build automatisch das Feld "exports" in package.json
  • Freie Dateistruktur: Keine erzwungene feste src/out-Struktur, Import-Erweiterungen können frei verwendet werden
  • Asset-Handling: Nicht-JS-Dateien werden automatisch kopiert
  • .tsx-Support: Konvertiert gemäß tsconfig zu .js/.cjs/.mjs usw.
  • CLI-Support: Bei Angabe eines bin-Entrypoints wird package.json#/bin automatisch erstellt
  • Kann langsam sein: Der Fokus liegt auf der Typprüfung und Umwandlung durch tsc, wobei Zuverlässigkeit/Genauigkeit wichtiger ist als Build-Geschwindigkeit

Funktionsweise und Abgrenzung

  • Automatisches Umschreiben von Erweiterungen (.js/.cjs/.mjs) und Import-Pfaden über die TypeScript Compiler API
  • Gleichzeitige Erstellung von ESM/CJS-Dateien sowie Typdeklarationen (.d.ts/.d.cts) für jeden Entrypoint
  • CLI-Bin-Entrypoint-Support: zshy schreibt automatisch den Pfad nach package.json#/bin, einschließlich Shebang-Unterstützung
  • Freie Dateistruktur: Es muss nur das outDir in der tsconfig angegeben werden
  • package.json#/exports wird beim Build automatisch erstellt und überschrieben

Erweiterte Funktionen und Kompatibilität

  • Wildcard-/Subpath-Support: Pfade wie ./plugins/* können deklariert werden, anschließend werden alle Unterpfade im eigentlichen src-Verzeichnis automatisch gebaut
  • Die meisten tsconfig.json-Optionen werden berücksichtigt (einige Modulspezifische Optionen werden bei jedem CJS/ESM-Build überschrieben)
  • Code ohne Import-Erweiterung erlaubt (from "./utils" usw.), Import-Endungen werden beim Build automatisch korrigiert
  • React Native/Legacy-Umgebungen werden ebenfalls über den Flat-Build-Modus unterstützt (Build-Ausgabe ins Paket-Root, Zugriff über index.js ohne exports)
  • Benutzerdefinierte Export-Bedingungen (sourceDialects) werden unterstützt: Zusätzliche Bedingungen wie etwa source können angegeben werden

Vorteile gegenüber Wettbewerbstools

  • Anders als tshy/tsup/tsdown werden alle Build-Ergebnisse ohne separate Verzeichnis- oder Paketstubs in einem einzigen outDir abgelegt
  • Durch die Nutzung der offiziellen TypeScript API wird die Kompatibilität mit dem aktuellen Standard-Flow von Node.js, ESM, CJS und TS maximiert
  • Ohne zusätzliche Konfiguration oder Bundler kann ein TypeScript-Paket auf Bibliothekeniveau mit nur einem einzigen Befehl ausgeliefert werden

Noch keine Kommentare.

Noch keine Kommentare.