본문 바로가기
Q&A2026년 7월 4일1분 읽기

GitHub Actions에서 npm install이 매번 5분씩 걸려요

c
ci_yerin
조회 1197댓글 3

CI 파이프라인이 너무 느립니다. 테스트는 1분이면 끝나는데 npm install이 매번 4~5분씩 걸려요. 의존성이 바뀐 것도 아닌데 매 실행마다 처음부터 다 받는 것 같습니다. 캐시를 어떻게 걸어야 하나요?

댓글 3

김김영삼3개월 전

두 단계로 크게 줄일 수 있습니다. 지금은 매 실행이 깨끗한 러너라서 node_modules를 매번 새로 만드는 상태예요.

1. setup-node의 내장 캐시 켜기 (가장 쉬움)
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm' # ← 이 한 줄

이러면 npm 전역 캐시(~/.npm)를 lock 파일 해시 기준으로 저장·복원합니다. 재설치가 훨씬 빨라져요.

2. npm ci 사용
- run: npm ci    # npm install 대신

npm ci는 package-lock.json을 그대로 설치해서 더 빠르고 재현성이 좋습니다. CI에서는 install보다 ci가 정석입니다.

효과

이 둘만 해도 보통 5분 → 30초~1분대로 떨어집니다. 캐시가 살아있으면 네트워크로 새로 받는 게 거의 없어져요.

cci_yerin(guest)3개월 전
cache: 'npm' 켰는데도 로그를 보면 "Cache not found"가 뜨면서 여전히 느립니다. 뭐가 문제일까요?
김김영삼3개월 전

"Cache not found"는 캐시 키가 매번 달라지거나, lock 파일을 못 찾는 경우입니다. 체크리스트로 보시죠.

  • package-lock.json이 레포에 커밋돼 있나요? setup-node 캐시는 lock 파일 해시로 키를 만드는데, lock 파일이 없거나 .gitignore에 들어가 있으면 캐시가 동작하지 않습니다. 이게 가장 흔한 원인이에요.
  • 모노레포라 lock 파일이 하위 폴더에 있나요? 그러면 경로를 알려줘야 합니다.
    - uses: actions/setup-node@v4
    with:
    node-version: 22
    cache: 'npm'
    cache-dependency-path: packages/*/package-lock.json
  • 첫 실행은 원래 miss입니다 — 캐시를 만드는 중이니까요. 두 번째 실행부터 hit이 나야 정상입니다. 한 번 돌리고 다시 확인해보세요.

대부분 lock 파일 커밋 여부입니다. 그것만 맞으면 두 번째 실행부터 확 빨라집니다.

Ctrl+Enter로 등록