- 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.