productdevbook/hucre
TypeScript0 / 0
XLSX/ODS/CSV 읽기·쓰기와 스트리밍을 지원하는 트리쉐이커블 라이브러리
TL;DR
이 레포는 Zero-dependency인 TypeScript 기반 스프레드시트 라이브러리로, XLSX/ODS/CSV/JSON/NDJSON/XML을 읽고 쓰며 스트리밍과 트리쉐이킹을 통해 번들 크기와 메모리 사용을 낮출 수 있습니다. openXlsx/saveXlsx 경로는 모델이 다루지 않는 워크북 파트를 보존해 차트·VBA 등 원본 자산을 유지한 채 수정하는 용도로 활용할 수 있고, writeXlsx·streamXlsxRows 등은 대용량 파일을 처리할 때 메모리와 처리 흐름을 제어하도록 설계되어 있습니다. README에 포함된 계측치와 기능 표(조건부 서식 13종, 스파크라인, 피벗 스켈레톤 등)로 사용 사례에 대한 기대치를 바로 판단할 수 있으며, stars 1799의 공개 관심도는 실사용 사례가 존재함을 시사합니다. 단점으로는 formula evaluation 미지원과 포맷 간(특히 XLSX→ODS) 속성 손실이 명시되어 있으므로 완전한 포맷 보존이 필수인 워크플로우에는 주의가 필요합니다.
핵심 포인트
- 이 레포는 라이브러리-SDK 성격의 npm 패키지로, 순수 TypeScript로 작성되어 ESM 네이티브와 Edge 런타임을 지원합니다. 설치는 npm install hucre로 간단하고, 모듈을 포맷별로 분리해 hucre/xlsx, hucre/csv 등 필요한 부분만 임포트해 tree-shaking으로 번들 크기를 최소화할 수 있습니다. zero-dependency 설계 덕분에 브라우저·Node·Deno·Bun·Cloudflare Workers 같은 다양한 실행환경에 추가 의존성 없이 바로 배포하기 적합합니다.
- 다양한 포맷을 읽고 쓸 수 있으며 읽기 전용으로 legacy 바이너리(.xls, .xlsb)도 자동 감지해 처리합니다. openXlsx/saveXlsx 경로는 모델이 다루지 않는 워크북 파트를 보존해 차트·매크로·테마 같은 원본 파트를 유지하면서 수정할 수 있고, readXlsx/writeXlsx 경로는 모델 기반의 authoring을 통해 새 XLSX를 생성합니다. 차트, 피벗 테이블(스켈레톤), 셀 내 이미지(DISPIMG), 스파크라인, 조건부 서식 등 꽤 많은 Excel 기능을 라운드트립으로 보존하거나 생성할 수 있어 템플릿 기반 리포팅에 유용합니다.
- 대용량 처리용 streaming API가 잘 갖춰져 있어 ZIP을 전부 버퍼링하지 않고도 행 단위로 읽고 쓸 수 있습니다. writeXlsxStream은 (예: 300k 행 측정에서) 피크 메모리가 수십 MB에 머무르는 반면 XlsxStreamWriter는 모든 행을 버퍼링하면 메모리 사용이 급격히 증가한다는 계측치가 README에 명시되어 있어 사용 목적에 따라 스트리밍·증분 작성 경로를 선택해야 합니다. 문자열 처리와 ZIP 레이아웃 관련 구현 세부(기본 inline strings, ZIP64 옵션, 압축에서 CompressionStream 사용 등)가 공개되어 있어 파일 크기와 메모리 트레이드오프를 제어할 수 있습니다.
- 기능 범위와 제한을 명확히 밝히고 있어 기대치 조정이 쉽습니다. 예를 들어 formula evaluation은 제공하지 않고, ODS 모델은 값·수식·병합·6가지 스타일만 완전 보존하므로 XLSX→ODS 변환 시 많은 속성이 암묵적으로 손실됩니다. 암호화는 WebCrypto 기반 ECMA-376 Agile 방식으로 읽기·쓰기 모두 지원하며, README에 포함된 예제와 API 문서가 실제 사용 흐름(read/open/stream/write/save/cloneChart 등)을 구체적으로 보여 줍니다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| CSV 파서/라이터 번들 (gzipped) | minified + gzipped size | 2.3 KB | — |
| readXlsx 단일 기능 번들 (gzipped) | minified + gzipped size | 32 KB | — |
| readXlsx + writeXlsx 번들 (gzipped) | minified + gzipped size | 64 KB | — |
| 전체 라이브러리 export * (gzipped) | minified + gzipped size | 114 KB | — |
1.8k
Stars
49
Forks
+206
Trending
0
조회수
1.8k watchers6 open issues
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.