9 điểm bởi xguru 2025-08-11 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Công cụ CLI giúp build thư viện TypeScript sang ESM/CJS một cách dễ dàng mà không cần bundler
  • Bắt đầu như công cụ build nội bộ của Zod, hiện đã mở rộng thành công cụ phổ quát cho mọi thư viện TypeScript
  • Sử dụng tsc (TypeScript compiler), với khả năng rewrite extension, build module kép, tự động tạo exports, hỗ trợ build production ngay cả khi không dùng bundler
  • Phù hợp cho triển khai nhanh và tự động hóa CI/CD, và được khuyến nghị mạnh khi cần dựng gói dạng thư viện (triển khai ESM/CJS đồng thời)
  • Tự động hóa khai báo kiểu/exports/bin giúp giảm thiểu lỗi trong bảo trì/triển khai

Đặc điểm và chức năng chính

  • Build module kép: Tạo cùng lúc file ESM(.js) và CJS(.cjs)
  • Không cần bundler/thiết lập riêng: Hoạt động mà không cần webpack, esbuild, rollup..., chỉ cần package.jsontsconfig.json
  • Quản lý entrypoint theo khai báo: Chỉ định trực tiếp entrypoint, subpath, wildcard tại package.json#/zshy
  • Tự động tạo exports: Sau khi build, tự động cập nhật trường "exports" trong package.json
  • Tự do cấu trúc file: Không bắt buộc cấu trúc src/out cố định, import extension cũng được dùng linh hoạt
  • Xử lý asset: Tự động sao chép cả file không phải JS
  • Hỗ trợ .tsx: Chuyển đổi theo tsconfig sang .js/.cjs/.mjs v.v.
  • Hỗ trợ CLI: Khi chỉ định entrypoint bin, tự động tạo package.json#/bin
  • Có thể chậm hơn: Tập trung vào kiểm tra kiểu và chuyển đổi của tsc, ưu tiên độ tin cậy/chính xác hơn tốc độ build

Nguyên lý hoạt động chính và điểm khác biệt

  • Tự động rewrite extension (.js/.cjs/.mjs) và đường dẫn import bằng TypeScript Compiler API
  • Tạo đồng thời file ESM/CJS và khai báo kiểu (.d.ts/.d.cts) cho mỗi entrypoint
  • Hỗ trợ entrypoint bin cho CLI: zshy tự động ghi đường dẫn vào package.json#/bin và hỗ trợ shebang khi cần
  • Tự do cấu trúc file, chỉ cần chỉ định outDir trong tsconfig
  • package.json#/exports được tự động tạo và ghi đè khi build

Tính năng nâng cao và tương thích

  • Hỗ trợ wildcard/subpath: Có thể khai báo đường dẫn như ./plugins/*, tự động build cho mọi subpath trong thư mục src
  • Tuân thủ hầu hết tuỳ chọn tsconfig.json (một số tuỳ chọn liên quan module được override cho mỗi build CJS/ESM)
  • Cho phép code không có extension import (from "./utils" v.v.), tự động hiệu chỉnh extension khi build
  • Môi trường React Native/legacy cũng hỗ trợ bằng flat build mode (xuất output về root gói, truy cập qua index.js mà không cần exports)
  • Hỗ trợ exports condition tuỳ chỉnh (sourceDialects): cho phép chỉ định thêm các điều kiện như source

Ưu điểm so với công cụ cạnh tranh

  • Khác với tshy/tsup/tsdown, thay vì tạo thư mục/phần đệm gói riêng, gom toàn bộ kết quả build vào một outDir duy nhất
  • Tận dụng API chính thức của TypeScript, tối đa hóa khả năng tương thích với xu hướng chuẩn mới nhất của Node.js/ESM/CJS/TS
  • Không cần config bổ sung, không cần bundler, chỉ một lệnh để phát hành package TypeScript cấp library

Chưa có bình luận nào.

Chưa có bình luận nào.