피드로 돌아가기
Zero-config Cesium.js in Vite — introducing vite-plugin-cesium-engine
Dev.toDev.to
Frontend

Zero-config Cesium.js in Vite — introducing vite-plugin-cesium-engine

vite-plugin-cesium-engine이 Vite에서 @cesium/engine 설정 자동화로 WASM 복사·BASE_URL 주입·CSS 링크 삽입을 0-config로 처리

Jérôme2026년 3월 24일8beginner

Context

Cesium.js를 Vite에서 사용할 때마다 WASM 워커와 자산 복사, window.CESIUM_BASE_URL 설정, CesiumWidget.css 주입, Ion 토큰 번들링 등 반복적인 설정 작업이 필요했다. 기존 Vite 플러그인들은 전체 cesium 패키지(UI 포함)를 대상으로 하므로, 경량의 @cesium/engine 코어(UI 없음)만 사용하려는 프로젝트는 수동 설정해야 했다.

Technical Solution

  • WASM 워커·빌드 파일·CesiumWidget.css를 출력 디렉토리에 자동 복사하고, 번들 전에 window.CESIUM_BASE_URL을 HTML에 주입
  • vite dev 중에는 node_modules에서 자산을 직접 제공하여 복사 오버헤드 제거
  • 환경별 Ion 토큰 지원: 개발/프로덕션 모드별로 서로 다른 토큰을 빌드 타임에 주입
  • virtual:cesium 모듈을 통해 CESIUM_BASE_URL과 ION_TOKEN을 window 전역 변수 대신 타입 안전한 import로 접근 가능하게 구현
  • assetsPath와 cesiumBaseUrl 옵션으로 CDN 배포나 특정 public 디렉토리 구조(Laravel, Rails 등)에 맞춤 가능하게 지원
  • debug: true 옵션으로 dev 서버 시작 시 설정 요약(모드, base, cesiumBaseUrl, 자산 복사 대상) 출력
  • 플러그인 시작 시 Ion 토큰의 JWT 형식을 검증하여 .env 치환 실패를 런타임 이전에 감지
  • node:fs, node:path 등 Node 내장 모듈과 Vite 플러그인 API만 사용하여 런타임 의존성 0개 유지

Impact

아티클에 정량적 수치가 명시되지 않음.

Key Takeaway

플러그인 기반 0-config 접근은 반복적인 보일러플레이트 설정을 자동화하면서, 디버그 모드와 타입 안전 모듈(virtual:cesium)로 설정 오류를 조기에 감지할 수 있다. 의존성 없는 구현으로 추가 설치 오버헤드를 완전히 제거하고 유지보수 부담을 경감시킨다.


Vite 프로젝트에서 @cesium/engine을 사용하는 팀은 vite-plugin-cesium-engine을 vite.config.ts에 추가하기만 하면, CESIUM_BASE_URL 수동 설정과 복잡한 빌드 스크립트를 제거할 수 있고, 환경별 Ion 토큰을 process.env.CESIUM_ION_TOKEN_DEV/PROD로 매핑하여 빌드 타임 주입만으로 배포 환경별 토큰 전환을 자동화할 수 있다.

원문 읽기