[버전 관리] package.json에서 ^와 ~의 차이

Dev_sheep·2025년 2월 2일

package.json을 보면 우리가 설치한 라이브러리 등을 보았을 때 버전이 적혀있다.

근데 이 중에서 ~ 혹은 ^이 붙어 있는 거를 보면서 어떤 의미를 알아보려 한다.

1. ^(Caret)

  • 메이저 버전인 가장 왼쪽의 숫자를 기준으로 마이너 버전까지만 업데이트 허용

    • 메이저 버전이 0이면 안정적이지 않다고 간주하여 패치 버전만 업데이트 가능하다.
  • 예시

    • "vue": "^3.2.0" -> 3.x.x 버전에서 3.2.0 이상, 4.0.0 미만까지 허용
    • "axios": "^0.21.0" -> 0.21.x 버전에서 0.21.0 이상, 0.22.0 미만까지 허용
  • 즉, 0을 제외하고 마이너 버전까지 업데이트를 한다.

2. ~(Tilde)

  • 주어진 마이너 버전 내에서만 변경을 허용한다.

  • 예시

    • "express": "~4.17.0"4.17.x 버전에서 4.17.0 이상, 4.18.0 미만까지 허용
    • "lodash": "~0.21.3"0.21.x 버전에서 0.21.3 이상, 0.22.0 미만까지 허용

3. 차이

  • 안정성을 위한다면 ~를 사용하여 보수적으로 관리하고, 최신 기능 반영 등에 신경쓴다면 ^를 사용한다.

  • 이외에도 단순 버전 고정으로 유지를 할 수 있다.

profile
기록과 공유

0개의 댓글