- CLI tool untuk membangun pustaka TypeScript menjadi ESM/CJS dengan mudah tanpa bundler
- Berawal sebagai alat build internal Zod, kini dirilis sebagai alat serbaguna untuk semua pustaka TypeScript
- Memanfaatkan tsc (TypeScript compiler) untuk mendukung build tingkat produksi tanpa bundler, termasuk rewrite ekstensi, build modul ganda, pembuatan
exports otomatis, dan fitur lain
- Cocok untuk deployment cepat dan otomatisasi CI/CD, serta sangat direkomendasikan saat perlu menyiapkan paket gaya pustaka (ESM/CJS sekaligus)
- Otomatisasi deklarasi tipe/exports/bin membantu mencegah kesalahan pemeliharaan dan deployment
Fitur dan fungsi utama
- Build modul ganda: membuat file ESM(.js) dan CJS(.cjs) sekaligus
- Tanpa bundler/pengaturan tambahan: bekerja tanpa webpack, esbuild, rollup, dll., hanya membutuhkan
package.json dan tsconfig.json
- Manajemen entrypoint deklaratif: tentukan langsung entrypoint, subpath, wildcard, dll melalui
package.json#/zshy
- Pembuatan
exports otomatis: memutakhirkan secara otomatis field "exports" di package.json setelah build
- Struktur file fleksibel: tidak memaksakan struktur tetap
src/out, ekstensi impor juga bebas digunakan
- Penanganan aset: menyalin otomatis berkas non-JS juga
- Dukungan .tsx: mengonversi menjadi .js/.cjs/.mjs sesuai
tsconfig
- Dukungan CLI: saat entrypoint
bin ditentukan, membuat package.json#/bin secara otomatis
- Dapat lebih lambat: berfokus pada pengecekan tipe dan konversi milik
tsc, mengutamakan reliabilitas/akurasi daripada kecepatan build
Prinsip kerja utama dan pembeda
- Penulisan ulang otomatis ekstensi (
.js/.cjs/.mjs) dan jalur impor lewat TypeScript Compiler API
- Setiap entrypoint menghasilkan file ESM/CJS dan deklarasi tipe (
.d.ts/.d.cts) sekaligus
- Dukungan entrypoint
bin untuk CLI: zshy menulis jalur ke package.json#/bin secara otomatis, juga mendukung shebang saat dibutuhkan
- Struktur file fleksibel, cukup menentukan
outDir di tsconfig
package.json#/exports dibuat otomatis dan ditimpa saat build
Fitur lanjutan dan kompatibilitas
- Dukungan wildcard/subpath: deklarasi jalur seperti
./plugins/* dimungkinkan, membangun otomatis semua subpath di dalam direktori src
- Mayoritas opsi
tsconfig.json didukung (beberapa opsi terkait module di-override per build CJS/ESM)
- Kode impor tanpa ekstensi juga diizinkan (
from "./utils" dll.), dan ekstensi diperbaiki otomatis saat build
- Lingkungan React Native/legacy juga dapat ditangani lewat flat build mode (output build ke root paket, akses lewat
index.js tanpa exports)
- Dukungan kondisi ekspor kustom (
sourceDialects): memungkinkan menambahkan kondisi seperti source
Keunggulan dibandingkan alat kompetitor
- Dibanding
tshy/tsup/tsdown, zshy tidak membuat direktori/paket stub terpisah; semua hasil build dirapikan dalam satu outDir
- Pemanfaatan API resmi TypeScript, memaksimalkan kompatibilitas dengan alur standar terbaru Node.js/ESM/CJS/TypeScript
- Tanpa kebutuhan config tambahan atau bundler, paket TypeScript level pustaka dapat diterbitkan dengan satu perintah saja
Belum ada komentar.