Vite 레거시·HMR 안정화와 Vitest 5 베타: Nuxt 팀의 3일 운영 점검 | Legacy, HMR, and Vitest 5: A Three-Day Nuxt Operations Check

Vite 레거시·HMR 안정화와 Vitest 5 베타: Nuxt 팀의 3일 운영 점검 | Legacy, HMR, and Vitest 5: A Three-Day Nuxt Operations Check

요약: 2026년 7월 23~26일 Nuxt·Vite 생태계의 핵심 신호는 레거시 번들 호환성, 개발 서버 HMR 복원력, CSS/정적 자산 경로의 정규화, 그리고 테스트 실행 비용의 재조정이다. 이번 3일 리포트는 이미 배포된 Vite 플러그인 릴리즈와 Vitest 베타를 중심으로, 아직 main에만 있는 Nuxt/Vite 변경은 배포 가능한 업데이트가 아닌 개발 중 변화로 구분한다.

3일 결론

바로 할 일은 “업그레이드”보다 “재현 가능한 검증”이다. 레거시 브라우저를 지원하는 Nuxt 앱은 @vitejs/plugin-legacy 8.2.2의 변경을 스테이징 번들에서 확인하고, Vitest 5.0.0-beta.7은 별도 브랜치에서 구성 해석과 캐시 동작을 시험해야 한다. Nuxt와 Vite의 CSS·HMR 관련 커밋은 유의미하지만 아직 정식 릴리즈 노트가 아닌 main 작업이므로, 지금 즉시 운영 의존성을 바꿀 근거는 아니다.

이번 창에서 선별한 5개 이슈

  • 배포됨 — @vitejs/plugin-legacy 8.2.2: Rolldown 관련 의존성을 갱신하고 bundled-dev에서 client-side HMR을 사용하며, 레거시 청크를 축소할 때 새 문법을 쓰지 않도록 수정했다.
  • 개발 중 — Vite HMR: 서버 재시작 때 environment snapshot을 보존하는 수정이 main에 합쳐졌다.
  • 개발 중 — Vite 파일 접근: server.fs.allow에 input을 추가하는 변경이 main에 들어갔다.
  • 개발 중 — Nuxt CSS/자산 경로: 개발 환경의 전역 CSS link 중복을 제거·정규화하고, app.buildAssetsDir의 슬래시를 정규화하는 수정이 합쳐졌다.
  • 배포됨(프리릴리즈) — Vitest 5.0.0-beta.7: 구성 해석과 서버 생성을 분리하는 breaking change, 캐시·워커·브라우저 실행 성능 개선을 포함한다.

흐름 1: 레거시 번들 지원은 “지원 선언”보다 산출물 검사로

사실 · 근거

Vite는 7월 23일 @vitejs/plugin-legacy 8.2.2를 배포했다. 태그의 공식 CHANGELOG는 Rolldown 관련 의존성 갱신과 bundled-dev의 client-side HMR 사용을 기록한다. 또 레거시 청크 최소화 과정에서 더 새로운 문법을 쓰지 않도록 고친 항목도 명시한다.

시사점

Nuxt 앱이 오래된 브라우저 또는 웹뷰를 지원한다면, 이번 변화는 현대 청크가 잘 빌드된다는 사실만으로 충분하지 않다는 신호다. build 결과의 legacy 청크를 실제 목표 브라우저에서 로드하고, polyfill·동적 import·에러 페이지까지 포함해 확인해야 한다. 이는 보안 패치 공지는 아니며, 호환성 회귀를 줄이기 위한 빌드 검증 항목으로 다루는 것이 정확하다.

흐름 2: HMR·파일 경계·CSS 경로는 아직 main, 운영 변경은 보류

사실 · 근거

Vite의 HMR 수정 커밋은 서버 재시작 중 environment snapshot을 보존한다. 같은 기간 server.fs.allow 변경은 input을 허용 목록에 추가한다. Nuxt의 전역 CSS link 정규화와 app.buildAssetsDir 슬래시 정규화도 모두 main 브랜치 커밋이다.

해석 · 적용 범위

이는 여러 패키지 경계, 절대/상대 경로, 재시작이 섞인 개발 환경에서 마찰을 줄이려는 방향으로 읽힌다. 다만 이 항목들은 아직 Nuxt/Vite의 정식 릴리즈가 아니다. 따라서 lockfile을 선행 변경하기보다, 모노레포·심볼릭 링크·커스텀 buildAssetsDir·CSS import가 있는 프로젝트에서 재현 테스트를 준비하는 것이 낮은 위험의 대응이다. server.fs.allow를 넓히는 설정은 편의보다 파일 노출 범위를 먼저 검토해야 한다.

흐름 3: Vitest 5 베타는 테스트 아키텍처와 비용을 함께 바꾼다

사실 · 근거

Vitest 5.0.0-beta.7은 7월 24일 배포된 프리릴리즈다. 공식 릴리즈 노트에는 서버 생성과 config resolution 분리라는 breaking change, injectCjsGlobals와 최상위 fsModuleCache 옵션, VM pool·Node compile cache·브라우저 prewarm·coverage 데이터 전송의 성능 작업이 포함된다. 베타이므로 안정 버전 대체로 표현할 수 없다.

시사점

Nuxt/Vite 팀은 “테스트가 빨라질 것”이라는 기대만으로 전환하지 말고, config factory·프로젝트 분리·worker 수·캐시 저장 위치·CI 메모리 제한을 함께 검사해야 한다. 특히 release note의 breaking change는 기존 설정 파일이 서버 생성 시점에 의존한 경우에 영향이 있을 수 있음을 뜻한다. 성능 이득은 같은 테스트 집합과 캐시가 비어 있는 첫 실행/따뜻한 재실행을 나누어 측정할 때만 비교 가능하다.

프론트엔드 개발자 체크리스트

  • 레거시: 스테이징에서 plugin-legacy 8.2.2을 고정한 뒤, 목표 웹뷰/브라우저로 legacy chunk와 라우트 전환을 smoke test한다.
  • HMR: dev server 재시작, 환경 변수 변경, CSS hot update를 한 시나리오로 묶어 현 버전의 재현 로그를 남긴다. main 커밋을 production에 직접 pin하지 않는다.
  • 경로: app.buildAssetsDir, CDN prefix, 전역 CSS import, 모노레포의 허용 경로를 목록화하고 slash 중복·누락과 공개 파일 범위를 점검한다.
  • 테스트: Vitest 5 beta는 전용 CI job에서 실행한다. config resolution, Node 버전, cgroup 메모리 제한, cold/warm 수행 시간을 기존 안정 버전과 비교한다.
  • 배포 판단: 정식 릴리즈 노트와 changelog에 동일한 수정이 나타난 뒤에만 운영 의존성 업데이트 PR을 연다.

짧은 Q&A

지금 Nuxt나 Vite를 올려야 하나요?

아니다. 이 72시간 창에서 운영 업데이트로 바로 검토할 대상은 plugin-legacy 8.2.2뿐이며, HMR·파일 경계·Nuxt CSS 경로 변경은 main 브랜치 작업이다. 릴리즈 여부와 프로젝트 재현 결과를 분리해 판단한다.

Vitest 5.0.0-beta.7은 도입할 가치가 있나요?

성능과 구성 모델을 미리 검증할 가치는 있지만, 프리릴리즈다. config resolution 분리의 영향을 받지 않는지 확인하는 격리 CI 실험으로 시작하고, 기본 CI를 즉시 교체하지 않는다.

출처와 확인 방법

보고 범위: 2026년 7월 23일 09:00~7월 26일 09:00 KST. 배포된 릴리즈와 main 브랜치 커밋을 분리해 검증했다.

더 깊게 읽기: 실전 가이드

이 리포트는 최근 흐름을 빠르게 파악하기 위한 요약입니다. 실제 프로젝트에 적용할 때는 아래의 기준 글과 함께 확인하면 더 안전합니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다