본문으로 이동
브라우저용 번들링 플러그인, 직접 만들었어요
문서

브라우저용 번들링 플러그인, 직접 만들었어요

신지호 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

브라우저에서 코드를 수정할 때마다 결과를 갱신하는 샌드박스를 만들려 했지만, 브라우저는 파일 시스템에 접근할 수 없고 iframe 기반 가상 환경은 결제 SDK에 필요한 리다이렉트를 지원하지 않았어요. 이에 `@rollup/browser`를 사용해 메모리 객체의 코드를 번들링하고, Rollup의 `resolveId`, `load`, `transform` 훅으로 가상 파일 탐색과 CDN 모듈 로딩, JSX 변환을 구현했어요. 외부 라이브러리는 esm.sh에서 가져오고, JSX 트랜스파일에는 빠른 빌드가 중요한 점을 고려해 Sucrase를 선택했어요. 그 결과 브라우저에서 React 코드를 번들링해 미리보기에 실행할 수 있었으며, Vue·Svelte 지원과 가상 파일 시스템 구축은 후속 과제로 남겼어요.

  • 브라우저에서 파일 시스템을 쓸 수 없다면, 메모리 객체를 가상 파일 시스템처럼 활용해 모듈을 관리할 수 있다.
  • Rollup 플러그인의 `resolveId`, `load`, `transform` 훅으로 모듈 탐색, 코드 로딩, 변환을 나눠 구현한다.
  • 외부 ESM 의존성은 esm.sh 같은 CDN에서 가져오고, 반복 요청을 줄이도록 캐시할 수 있다.
  • 코드 변경이 잦은 미리보기 환경에서는 트랜스파일러의 기능 범위뿐 아니라 빌드 속도도 중요한 선택 기준이다.

소개

프론트엔드 번들링 도구를 사용하는 것을 넘어 직접 플러그인을 만들어 본 과정을 소개해요.

이 자료가 담긴 로드맵

커뮤니티에서 더 보기

비슷한 학습 자료

문서 이현재

실시간으로 생성되는 코드를 어드민 화면으로 보여 주기 위해, 개발 환경을 브라우저 안으로 옮긴 이야기를 소개해요.

프론트엔드 AI 코딩

문서 김동희

서버가 하던 필터링·정렬·검색·페이지네이션을 브라우저로 옮겼더니, 속도뿐 아니라 손대지 못하던 문제 네 개가 같이 풀렸습니다.

웹 개발 프론트엔드

문서 장지훈

100개가 넘는 라이브러리를 관리하면서 마주했던 문제들을 플러그인 시스템으로 풀어낸 방법을 공유합니다.

프로그래밍 언어 데브옵스 · 인프라

문서 강현구

매일 “사용”만 하는 transpiler, 토스뱅크에서는 한 단계 더 잘 “활용”해 보기로 했어요. 오늘은 transpiler로 로깅 과정을 개선한 사례를 소개 드릴게요.

프론트엔드 프로그래밍 언어

문서 박서진

현대적인 JavaScript를 쓰면서도 넓은 범위의 기기를 지원하기 위한 Polyfill을 어떻게 똑똑하게 설정할 수 있는지 소개합니다.

웹 개발 프론트엔드

문서 박지우

기술 부채는 개발할수록 쌓여만 갑니다. 프론트엔드 챕터가 JSCodeShift를 이용하여 순식간에 100개 서비스의 기술 부채를 해결한 경험을 소개합니다.

프론트엔드 개발 도구