This npm package makes generating zip files simple
zipstream npm 패키지를 활용하여 웹 프로젝트 자산을 간편하게 ZIP 파일로 생성하고 다운로드하는 기능을 구현했습니다. 📦
- 사용자가 프로젝트의 HTML, CSS, 웹 컴포넌트 등 모든 파일을 하나의 ZIP으로 다운로드할 수 있도록 지원합니다. 💾
- 이 기능은 유료 구독자만 이용할 수 있도록 결제 시스템(Stripe)과 연동된 구독 기반 접근 제한이 적용되어 있습니다. 💳
- 백엔드(Convex Action)에서 프로젝트 페이지 및 관련 파일들을 Convex 스토리지에서 가져와 ZIP 아카이브를 생성합니다. ☁️
zipstream은 파일을 버퍼로 변환하여 아카이브에 추가하고, PassThrough 스트림을 통해 데이터를 처리한 후 최종 ZIP 버퍼를 생성합니다. ⚙️
- 생성된 ZIP 파일은 Convex 스토리지에 임시로 저장되며, 비용 절감을 위해 10분 후 자동으로 삭제되도록 스케줄러가 설정되어 있습니다. ⏱️
- 다운로드는 생성된 ZIP 파일 URL을 이용해 동적으로
<a> 태그를 생성하고 클릭하는 방식으로 이루어지지만, 브라우저 호환성 문제가 있을 수 있습니다. 🌐
- 성능 향상을 위해 파일 가져오기에
Promise.all 적용, 메모리 공격 벡터 방지, HTTP 엔드포인트를 통한 다운로드 방식 개선 등 추가적인 개선 사항이 언급되었습니다. 🚀
zipstream은 PDF 집계 등 실제 프로덕션 환경에서도 매우 유용하고 성능이 뛰어난 패키지로 강력히 추천됩니다. 👍
데브허브 | DEVHUB | This npm package makes generating zip files simple