Migrate apps/front, apps/admin from Next.js to vinext - #9
Conversation
재검증 완료 ✅devup-ui \ix-css-chunk-reemit\ 워크트리에서 요청한 CSS 중복 emit 수정이 PR #653로 머지되어 @devup-ui/vite-plugin@1.0.69\로 배포됨. \�unx @dependency-check-updates/cli -d -u --rm\로 재실행 후 전체 재검증:
이제 알려진 리스크였던 CSS 파일명 충돌 경고까지 해소됨. |
vinext#3064 (phantom .js modulepreload refs for CSS-only chunks) is a known, harmless upstream bug - confirmed non-blocking for rendering, hydration, and interaction. Not worth carrying a bespoke build-output post-processing script for a cosmetic 404 issue.
scripts/prune-missing-assets.ts 제거별도 후처리 스크립트를 빌드 파이프라인에 넣는 것 자체가 유지보수 부담(까먹기 쉬움, Docker COPY 스텝 추가 등)이라 판단해 제거함. 근본 원인: cloudflare/vinext#3064 — devup-ui처럼 CSS를 전용 청크로 분리하는 플러그인을 쓰면 vinext의 RSC asset manifest가 실재하지 않는 .js\ 청크 URL을 남겨 \modulepreload\ 요청이 404남. vinext 자체의 아직 안 고쳐진 버그이며, 우리 쪽 vite.config로 우회 불가능(원인이 vinext 내부 manifest 생성 로직 + standalone 번들 조립 단계에 있어 Vite 플러그인 훅 생명주기 밖에서 발생). 왜 그냥 두기로 했는지: 위 이슈에 명시된 대로 \modulepreload\는 힌트일 뿐이라 렌더링/hydration/인터랙션에 영향 없음(우리도 admin /signin, /dashboard\ 실제 curl + 이전 Playwright 검증으로 확인함). 페이지당 낭비되는 요청 수만 늘어나는 정도라, 이 정도 코스메틱 이슈 때문에 자체 빌드 후처리 스크립트를 계속 들고가는 것보다는 vinext가 upstream에서 고칠 때까지 그냥 두는 게 낫다고 판단. 변경 사항
검증
|
@devup-ui/plugin-utils' createNodeModulesExcludeRegex already hardcodes the entire @devup-ui scope, so include: ['@devup-ui/reset-css', '@devup-ui/components'] was a no-op. Verified: identical module counts and byte-identical rendered HTML before/after.
DevupUI({ include: [...] }) 옵션 제거devup-ui-plugin-utils의 \createNodeModulesExcludeRegex(include, extra)\를 직접 확인: \\js @devup-ui, @devup-editor\ 스코프 전체가 이미 하드코딩으로 항상 node_modules 제외 대상에서 빠져있음(=항상 스캔 대상). \ssr.noExternal\도 /@devup-ui/\ 정규식으로 스코프 전체가 이미 하드코딩됨. 즉 \include: ['@devup-ui/reset-css', '@devup-ui/components']\는 둘 다 @devup-ui/\ 스코프라 완전히 dead config였음. 검증: 옵션 제거 전/후 빌드에서 transform된 모듈 수 완전 동일(front 129/230/81, admin 298/258/290/269/252), 렌더된 HTML 바이트 수도 완전 동일(front 8542, admin/signin 12606) — 실측으로 무변화 확인. |
배경
빠른 개발 속도 및 프로덕션 빌드 용량 절감을 위해 Next.js -> vinext(cloudflare/vinext, Vite 기반 Next.js API 재구현체) 완전 전환.
devfive-center(origin/main), yeollin-cms 등 조직 내 다른 저장소의 검증된 패턴을 그대로 적용:
변경 사항
ext, @devup-ui/next-plugin, @devup-api/next-plugin\ 제거. \�inext, \�ite, @vitejs/plugin-rsc,
eact-server-dom-webpack, @devup-ui/vite-plugin, @devup-api/vite-plugin\ 추가
ext.config.ts\ 삭제, \�ite.config.ts\ 추가
검증
ode\로 띄워 실제 curl 검증:
알려진 리스크
Base 브랜치 안내
이 PR은 아직 머지되지 않은 #8(디펜던시 업데이트) 위에 쌓은 것이라 base를 \owjs3901/update-dep\로 설정함. #8이 머지되면 base를 \main\으로 재지정 예정.