package.json의 version방식

Hunter Joe·4일 전
0

package.json

package.json은 프로젝트의 정보와 패키지 매니저(npm, yarn)로 설치된 모듈(이름, 버전)을 관리하는 파일이다.

// vite package.json
{
  "name": "frontend",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint .",
    "preview": "vite preview"
  },
  "dependencies": {
    "axios": "^1.7.7",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-router-dom": "^6.27.0"
  },
  "devDependencies": {
    "@eslint/js": "^9.13.0",
    "@types/react": "^18.3.12",
    "@types/react-dom": "^18.3.1",
    "@vitejs/plugin-react": "^4.3.3",
    "eslint": "^9.13.0",
    "eslint-plugin-react": "^7.37.2",
    "eslint-plugin-react-hooks": "^5.0.0",
    "eslint-plugin-react-refresh": "^0.4.14",
    "globals": "^15.11.0",
    "vite": "^5.4.10"
  }
}

package.json에서 모듈 버전은 Semenantic Versioning(SemVer)를 따른다.

SemVer 이란

  • SemVer은 버전 번호를 통해 소프트웨어의 변경 사항을 명확하게 나타내기 위한 규칙
    -Major.Minor.Patch 형식으로 versioning을 한다.

  1. Major(주 버전)
  • 첫 번째 숫자는 기능이 크게 변경되거나 하위 호환이 깨지는 변경이 있을 때 올린다.
  1. Minor(부 부전)
  • 두 번째 숫자는 하위 호환성을 유지하면서 새로운 기능이 추가 될 때 올린다. 기존 기능에는 영향을 미치지 않는다.
  1. Patch(수 버전)
  • 버그 수정이나 작은 변경사항이 있을 때 올린다. 기존 기능에는 영향을 미치지 않고 문제를 해결하거나 성능을 개선한다.

버전 방식 살펴보기

// package.json

"dependencies": {
  "aaa":   "1.2.3",
  "bbbbb": ">1.2.3",
  "cc":    ">=1.2.3",
  "dddd":  "<1.2.3",
  "eee":   "<=1.2.3",
  "ffff":  "^1.2.3",
  "gg":    "~1.2.3",
}
  • 위 기호가 명시된 경우 모듈의 자동 업데이트가 가능해진다.

(1) >, ≥, <, ≤

> 1.2.3
≥ 1.2.3
< 1.2.3
≤ 1.2.3
  • 지정한 버전보다 초과, 이상, 미만, 이하 버전으로 업데이트 할 수 있다.
    ≤ 1.2.31.2.3, 1.1.8로 업데이트 할 수 있지만 1.2.4, 1.4.0 버전으로 업데이트 불가

(2) x

1.2.x
  • x로 표시된 버전만 자동 업데이트가 가능하다.
  • 1.2.x1.2.9로는 가능하지만 1.3.0으로는 할 수 없다.

(3) ||

1.2.3 || >= 1.2.9 < 2.0.0
  • ||은 or 연산자(또는)로, 하나 이상의 범위를 명시할 수 있다.
  • 만약 A || B 로 버전을 명시한 경우 A, B 둘 중 하나만 충족해도 버전업이 가능하다.
  • 예를 들어, 1.2.3 || >= 1.2.91.2.3 또는 1.3.0으로 업데이트할 수 있다.

(4) Prerelease Tags(alpha, beta, ... )

1.2.3-alpha
1.2.3-alpha.1
1.2.3-0.0.1
1.2.3-x.2.z

preRelease 태그는 빠르게 업데이트되는 경우, 혹은 정식 버전으로 적합하지 않은 경우 붙이는 태그이다.
patch 버전 뒤에 (-)을 붙여 프리릴리즈 버전을 표시한다.
앞서 말했듯이 정식 버전으로 적합한 상태가 아니므로 정식 버전보다 우선순위가 낮다.

(5) Tilde( ~ )

~1.2.3
  • 최소버전이 1.2.3이상이고 1.2.3이상 1.2.x 이하 minor 버전이 3으로 올라가지는 않도록 업데이트 범위를 제안한다.

(6) Caret(^)

^1.2.3
  • 1.2.3이상의 버전을 허용하지만, major 버전이 2로 올라가지는 않도록 업데이트 범위를 제한
    -즉, 1.3.x, 1.4.x 등 같은 major 버전(1) 내에서는 최신 마이너 또는 패치 버전으로 업데이트될 수 있지만, 2.x.x 버전은 설치되지 않는다.
profile
두 or 다이 / FE 목표
post-custom-banner

0개의 댓글