BUILD OUTPUT

React 빌드 결과

개발 서버에서 잘 보이는 화면도 배포 산출물에서는 환경값, public 경로, 청크 이름, 캐시 정책 때문에 다르게 실패할 수 있다. 빌드 단계의 핵심은 JSX를 줄이는 것이 아니라 브라우저가 받을 파일 목록과 참조 관계를 재현 가능하게 고정하는 것이다.

01

환경값 봉인

빌드 시점에 읽는 변수와 런타임에 읽어야 하는 값을 분리한다.

비밀값은 클라이언트 번들에 들어가면 안 된다
02

번들 분할

라우트, vendor, lazy chunk가 어떤 파일로 갈라지는지 확인한다.

초기 청크가 커지면 첫 렌더가 늦어진다
03

자산 참조

이미지, 폰트, CSS의 경로가 CDN prefix와 SPA fallback 안에서 깨지지 않는지 맞춘다.

404는 화면보다 네트워크 탭에 먼저 보인다
04

맵과 리포트

sourcemap 공개 범위와 bundle analyzer 결과를 배포 정책에 맞춘다.

디버깅 편의와 코드 노출을 따로 판단한다
05

정적 스모크

dist를 실제 정적 서버로 열어 새로고침, 딥링크, 캐시 무효화를 확인한다.

dev server 통과는 배포 통과가 아니다
환경 변수
접두사와 주입 시점 클라이언트에 공개할 값만 빌드에 주입한다.
API key처럼 보이는 문자열은 산출물에서 검색한다
에셋 경로
상대 경로와 base URL 서브디렉터리 배포, CDN prefix, SPA fallback을 함께 본다.
새로고침 후 흰 화면이면 먼저 경로를 의심한다
sourcemap
공개 여부와 보관 위치 운영 디버깅이 필요하면 업로드 대상과 접근 권한을 분리한다.
브라우저 공개와 오류 수집 업로드는 다르다
청크 캐시
해시 파일과 HTML 캐시 해시 자산은 길게 캐시하고 HTML은 짧게 갱신한다.
오래된 HTML이 새 청크를 못 찾는 배포 레이스를 막는다

빌드 산출물 확인

dist 직접 실행 정적 서버에서 홈, 딥링크, 새로고침, 뒤로가기를 순서대로 연다.
네트워크 오류 JS, CSS, font, image 요청에 404나 MIME 오류가 없는지 본다.
산출물 검색 비밀값, 내부 URL, 의도치 않은 sourcemap이 남았는지 검색한다.