버전 해석 방식 | package.json 의 버전 범위(range) 내에서 다른 버전을 설치할 가능성이 있음 | package-lock.json 에 명시된 정확한 버전만 설치 |
package-lock.json 변경 여부 | 변경될 가능성이 있음 | 절대 변경되지 않음 |
설치 속도 | 버전 해석 과정이 있어 상대적으로 느릴 수 있음 | 버전 결정 과정이 없으므로 더 빠름 |
설치 방식 | 기존 node_modules 유지하며 필요한 의존성 추가/변경 | 기존 node_modules 삭제 후 완전 새로 설치 |
의존성 충돌 방지 | 기존 의존성 유지하므로 충돌 가능성이 있음 | 항상 package-lock.json 기반으로 설치해 충돌 가능성 최소화 |
일관된 설치 보장 | 보장되지 않음 (버전 차이 발생 가능) | 매번 동일한 의존성 설치 보장 |
주로 사용되는 환경 | 로컬 개발 환경 | CI/CD 환경 |
로컬 개발 환경에서도 사용 가능? | ✅ 일반적으로 사용 | ✅ 가능하지만 node_modules 삭제로 인해 불필요한 시간 소요 가능 |
언제 사용해야 하나? | 개발 중 패키지를 추가/업데이트할 때 | CI/CD 환경에서 빌드의 일관성을 유지할 때, 또는 팀에서 의존성 버전을 엄격하게 관리하고 싶을 때 |