CDN = Content Delivery Network (콘텐츠 전송 네트워크)
→ 전 세계에 퍼져 있는 서버 네트워크에서 정적 파일(JS, CSS, 이미지 등)을 빠르게 전송해주는 서비스다.
📦 예:
esm.sh - ESM(ES Module) 방식으로 npm 패키지를 브라우저에 제공
unpkg.com - npm에 올라온 모든 패키지를 JS 파일 형태로 서빙
jsdelivr.com - CDN + 캐싱 기능 (Cloudflare, Fastly 등 기반)
import _ from "https://esm.sh/lodash@4.17.21"
즉, 파일 내려주는 "자동 번들링 & 캐싱 서버" 인 것 이다.
CDN은 패키지 전체 구조를 통제하기 어려움
→ ESM-only, CommonJS 충돌 문제
중첩 의존성(sub-dependencies) 관리 어려움
→ lodash만 가져와도 의존성 직접 import해야 할 수 있음
VSCode / TypeScript 지원 미흡
→ 자동완성, 타입 추론, 오류 인식 약함
오프라인 개발 가능
– 한 번 설치하면 인터넷 없이도 작업 가능
도구와 잘 통합됨
– TypeScript, ESLint, Vite 등은 node_modules 기준으로 동작
– 타입도 자동으로 인식됨 (@types)
배포가 더 안정적임
– 모든 의존성이 번들에 포함돼서 CDN 장애와 무관
최적화 용이
– 번들러가 필요 없는 코드를 제거해주니까 성능이 더 좋아짐
테스트/배포 자동화에 강함
– npm install 한 번으로 모든 환경 복제 가능 (CI/CD에 적합)