피드로 돌아가기
Dev.toFrontend
원문 읽기
Meriyah 파서 도입 및 AST 커스텀을 통한 Brisa 빌드 파이프라인 최적화
One PR to a parser unlocked prerendering in Brisa
AI 요약
Context
TypeScript Compiler API 기반의 기존 i18n 라이브러리 설계에서 발생한 과도한 타입 체크 오버헤드로 인한 빌드 속도 저하 문제 발생. 단순 AST 추출 목적임에도 Full Type-checker 인스턴스화로 인해 필요 이상의 리소스가 낭비되는 병목 지점 식별.
Technical Solution
- Native Binding이나 WASM 로딩 단계가 없는 Pure JavaScript 기반의 Meriyah 파서를 채택하여 마이크로초 단위의 파싱 속도 확보
- Bun Transpiler를 통한 1차 변환 후 Meriyah로 ESTree-compliant AST를 생성하는 직렬 파이프라인 구축
renderOn="build"속성 탐색 시__prerender__macro()호출로 대체하고ImportAttribute노드를 수동으로 생성하는 AST Transform 로직 설계- Import Attribute 미지원 문제를 해결하기 위해 Meriyah 파서 자체에 해당 문법 지원 기능을 추가하는 PR 기여를 통한 엔드 투 엔드 파이프라인 완성
- astring 라이브러리를 활용하여 수정된 AST 노드를 다시 코드로 재생성하는 코드 제너레이션 프로세스 적용
실천 포인트
- AST 분석 도구(AST Explorer 등)를 통해 구문 분석 결과와 실제 코드의 구조적 매핑을 우선 확인 - 단순 AST 추출이 목적일 경우 Full Compiler API 대신 Lightweight Parser(Acorn, Meriyah 등) 검토 - 프레임워크 레벨의 코드 변환 필요 시, Target Parser가 최신 ECMAScript 제안 문법(Import Attributes 등)을 지원하는지 확인 - 파서 선택 시 WASM/Native 바인딩 유무에 따른 콜드 스타트 및 런타임 오버헤드 비교 분석