회사의 어드민 웹 페이지 프로젝트의 패키지 매니저를 npm에서 pnpm으로 변경하고자 했다. 그 이유는 npm은 의존성을 설치하는 과정에서 CI/CD 빌드 파이프라인 시간이 늘어나 배포 효율이 감소하고 PR리뷰에 영향을 받았다.
node_modules 폴더 크기 350mb(0.35gb)가 305mb로 줄었다.
time 명령어를 사용하여 출력된 시간을 비교했다. (최소 3~5회 테스트 후 평균 값을 계산하면 더 정확하다.)
# Clean the environment
rm -rf node_modules package-lock.json pnpm-lock.yaml
# Test npm
time npm install
# Clean again
rm -rf node_modules package-lock.json pnpm-lock.yaml
# Test pnpm
time pnpm install
참고로, npm과 pnpm 모두 이전 설치 기록을 기반으로 캐시된 데이터를 사용하기 때문에 node_modules, package-lock.json, pnpm-lock.yaml
이 존재하면 새로 설치하는 대신 기존 데이터를 활용하므로 실제 설치 속도를 측정하지 못한다. 그래서 rm -rf
명령어로 해당 파일들을 제거한 상태에서 테스트해야 정확한 비교가 가능하다.
npm install 16.26s user 17.42s system 47% cpu 1:11.66 total
pnpm install 7.80s user 15.12s system 86% cpu 26.589 total