# Zshy - 번들러 없는 TypeScript 라이브러리 빌드 툴 (tsc 기반)

> Clean Markdown view of GeekNews topic #22443. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=22443](https://news.hada.io/topic?id=22443)
- GeekNews Markdown: [https://news.hada.io/topic/22443.md](https://news.hada.io/topic/22443.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-08-11T09:46:02+09:00
- Updated: 2025-08-11T09:46:02+09:00
- Original source: [github.com/colinhacks](https://github.com/colinhacks/zshy)
- Points: 9
- Comments: 0

## Summary

**TypeScript** 라이브러리 패키징을 간소화하는 **CLI 빌드 도구**는 별도의 번들러나 복잡한 환경 설정 없이, **tsc** 기반으로 **ESM/CJS 파일을 동시 생성**하고, 엔트리포인트·exports·타입 선언·bin 관리를 자동화합니다. **빠른 배포와 CI/CD 자동화**, 유지보수 실수 방지에 강점을 가지며, **package.json과 tsconfig.json만으로** 대부분의 설정을 대체해 **모듈 환경 호환성과 자유로운 파일 구조**를 보장합니다. **TypeScript Compiler API** 활용 및 와일드카드, 커스텀 exports 조건 등 고급 기능도 지원해, 기존 빌드 툴과 차별화된 생산성과 정확성을 제공합니다.

## Topic Body

- 번들러 없이 TypeScript 라이브러리를 손쉽게 ESM/CJS로 빌드하는 CLI 도구  
- **Zod**의 내부 빌드 툴로 출발해, 현재는 모든 TypeScript 라이브러리용 범용 툴로 공개  
- **tsc(TypeScript 컴파일러)** 를 활용하여, 확장자 리라이트, 듀얼 모듈 빌드, exports 자동 생성 등 번들러 없이도 프로덕션 수준 빌드 지원  
- **빠른 배포·CI/CD 자동화에 적합**하며, **라이브러리형 패키지(ESM/CJS 동시 배포) 구축 필요 시 강력 추천**  
- **타입 선언/exports/bin 자동화**로 유지보수/배포 실수 예방 효과  
### 특징 및 주요 기능  
- **듀얼 모듈 빌드**: ESM(.js)과 CJS(.cjs) 파일을 한 번에 생성  
- **번들러/별도 설정 불필요**: webpack, esbuild, rollup 등 없이 동작하며, 오직 `package.json`과 `tsconfig.json`만 필요  
- **엔트리포인트 선언적 관리**: `package.json#/zshy`에서 entrypoint, subpath, wildcard 등 직접 지정  
- **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 빌드마다 override)  
- **import 확장자 없는 코드도 허용** (`from "./utils"` 등), 빌드시 확장자 자동 보정  
- **React Native/legacy 환경**도 flat build mode로 대응 가능(패키지 루트로 빌드 출력, exports 없이 index.js로 접근)  
- **커스텀 exports condition**(`sourceDialects`) 지원: source 조건 등 추가 지정 가능  
### 경쟁 툴 대비 장점  
- **tshy/tsup/tsdown** 등과 달리, 별도 디렉터리/패키지 스텁 생성 없이 단일 outDir에 모든 빌드 결과 정리  
- **TypeScript 공식 API 활용**, Node.js/ESM/CJS/TS의 최신 표준 흐름과 호환성 극대화  
- **추가 config, 번들러 필요 없이** 단일 명령만으로 라이브러리급 TypeScript 패키지 배포 가능

## Comments



_No public comments on this page._
