문제 상황
CI환경에서 “크롬 스토어에 업로드를 하려는데, 루트의 zip파일이 유효하지 않다.” 오류 발생
-
최근에 Remote Cache를 설정했다. → Remote Cache와 관련이 있을 것이다.
-
Remote Cache 덕분에 5초 이내로 빌드를 완료했다. (Remote 환경에 있는 캐싱 활용)
원인
- Vite 빌드는 모두 dist/에 출력하지만, Turbo의 outputs:[”dist/**”]는 패키지 로컬 폴더 기준으로 해석이 된다.
- 이는, 현재 모노레포 구조 방식에 있다: 각 패키지(chrome-extension, content-ui, options, side-panel)에서 각각 vite로 빌드하고, 이 결과물을 루트에 저장한다. → 빌드 결과물 저장 위치가 잘못된 것이다.
- Remote Cache 전에는 매 빌드가 실제로 실행되어 루트 dist/에 결과물이 정상적으로 생성됐다. Remote Cache 도입후에는 캐시 히트로 빌드가 스킵되면서, Turbo가 outputs에 명시된 경로(패키지 로컬 dist/)로만 복원하기 때문에 루트
dist/는 비게 된 것이다.
- 모든 캐시가 Turbo 캐시 히트되면 루트 dist/가 비어있는 상태로 남아 zip가 0바이트로 생성된다.
해결 방법
-
각 패키지의 turbo.json의 outputs 경로를 수정한다.
{ "extends": ["//"], "tags": ["app"], "tasks": { "build": { "outputs": ["../../dist/content-ui/**"] } } } -
단, 본인의 dist가 아니라원래 루트 dist를 사용하는 chrome-extension은 예외적으로 다른 패키지들을 제거한다.
{ "extends": ["//"], "tags": ["app"], "tasks": { "build": { "outputs": ["../../dist/**", "!../../dist/side-panel/**", "!../../dist/options/**", "!../../dist/content-ui/**"] } } }