일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 캐나다취준
- TS
- react
- JUNCTION2023
- Framer motion
- Effective Typescript
- useState
- Semantic Versioning
- 글또 10기
- ASP.NET
- 타입스크립트
- framer
- 테오의 스프린트
- framer-motion
- CSS
- 시스템디자인
- CSS방법론
- SemVer
- React-Router-Dom
- 개발자를 위한 글쓰기 가이드
- typescript
- JSBridge
- 글또
- 개발자 원칙
- 코드트리
- 회고
- 이펙티브타입스크립트
- 캐나다개발자
- 알고리즘
- VS Code
- Today
- Total
큰 꿈은 파편이 크다!!⚡️
시맨틱 버전 관리 (Semantic Versioning) 본문
소프트웨어 프로젝트를 배포(Release)할 때 버전 관리를 어떻게 할까?
팀마다 정해진 규칙이 있겠지만, 알려진 버전 변경 규칙 중 하나인 Semantic Versioning (Semver) 에 대해 알아보려 한다. Semantic이란 '의미론적'이라는 뜻인데, 즉 각 버전 넘버에 의미를 부여하고 있음을 나타낸다고 생각한다.
해당 포맷은 Major.Minor.Patch 을 따르며, Node.js, npm 등에서 사용하고 있다.
종류
Major version: 이 버전을 올리면 뒤의 Minor, Patch 버전은 0으로 설정한다. (1.4.9 -> 2.0.0) 하위 호환되지 않는 API 변경사항이 포함된다.
Minor version: 하위 호환성이 보장되는 업데이트이며, 주로 신규 기능이 추가되었을 때 Minor 버전을 올린다. 이 버전을 올리면 Patch 버전은 0으로 설정한다. (1.2.33 -> 1.3.0)
Patch Versions: 주로 버그 수정 시 업데이트한다. 즉, 기능적 수정은 포함되지 않는다. 의외로 헷갈리게 되는 부분이, . 이하 숫자를 '소수점'으로 보는것이 아니라는 점이다. 만약 2.6.9 버전 이후 버그를 수정하면 2.7.0이 아니라, 2.6.10으로 업데이트한다. 마찬가지로, 1.0.2와 1.0.10 사이에서는 1.0.10이 더 최신 버전임을 의미한다.
💡 주의점
- 1.0.0이 최초의 프로덕션 배포 버전이며, 0.x.x 버전은 모두 development draft를 의미한다.
- 최초의 버전은 0.0.1이 아닌 0.1.0이다. 아무런 버그 수정이 일어나지 않았기 때문이다.
- Pre-release
하는 경우 patch 버전 뒤에 -
(하이픈)를 붙이고, Build
버전은 +
를 추가하여 관리한다. (1.0.0-alpha.1, 1.0.0+build.1)
버전 범위 지정
package.json에서 ^
또는 ~
가 prefix된 버전을 본 적이 있을 것이다. 두 기호는 버전의 범위를 나타낸다.
^ 캐럿 (Caret)
가장 왼쪽에 0이 아닌 버전의 하위 범위 변경을 허용한다.
- ^1.x.x: minor, patch 버전 업데이트 허용
- ^0.1.x: patch 업데이트 허용
- ^0.0.1: 업데이트를 허용하지 않음
~ 틸드 (Tilde)
Minor version이 지정되어 있다면 patch 버전 변경을 허용
Minor version이 지정되어 있지 않다면 minor 버전 변경을 허용
- ~1.1.x : patch 버전 업데이트 허용 (1.1.0 <= ~1.1.x < 1.2.0)
- ~2: minor 버전이 지정되어있지 않으므로 minor 변경을 허용 (2.0.0 <= ~2 < 3.0.0)
npm에서 알아보기
실제 SemVer
을 사용하는 패키지들을 여기에서 확인할 수 있다
npm i react --save: ^최신 버전으로 설치됨 (^2.0.0)
npm i react --save-exact: 최신 버전으로 설치됨 (2.0.0)
참고
- https://www.geeksforgeeks.org/introduction-semantic-versioning/
- https://velog.io/@iamjoo/Semantic-Versioning%EC%9D%B4%EB%9E%80
'기타 CS' 카테고리의 다른 글
[시스템 디자인 학습] Load balancer (1) | 2024.11.10 |
---|---|
ASP.NET으로 서버&리액트 프로젝트 서빙하기 (0) | 2024.02.04 |
Microsoft.IdentityModel 인증 + 리액트 (0) | 2023.07.30 |
“런타임”이라는 단어를 이제는 사용할거야 (0) | 2023.07.02 |
내가 정착한 VSCode 환경 설정 💞 소개 (0) | 2023.05.20 |