일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 결혼준비예상비용
- 전세대출
- 일본여행
- 제주도여행
- 혼공컴운스터디
- reduce함수 예제
- windows10
- 교토숙소
- 부천술집
- 부천맛집
- 비아인프라임교토에키
- Docker
- 문래맛집
- 부천역맛집
- 오사카여행
- 부천데이트
- 컴퓨터구조
- Linux
- 강서구웨딩홀추천
- 제주여행비용정리
- 부천데이트맛집
- 전세사기
- 교토여행
- 제주도가성비여행
- 혼공컴운자습문제
- 우메다홀릭호텔
- 혼공컴운
- WSL2
- 허그전세대출
- 일본첫여행
- Today
- Total
sugar.kim
package.json 버전 명시 틸드(~), 캐럿(^) 설명 본문
틸드는 간단히 말하면 현재 지정한 버전의 마지막 자리 내의 범위에서만 자동으로 업데이트한다.
- ~0.0.1 : >=0.0.1 <0.1.0
- ~0.1.1 : >=0.1.1 <0.2.0
- ~0.1 : >=0.1.0 <0.2.0
- ~0 : >=0.0 <1.0
그래서 다양한 방식으로 버전을 명시했을 때 위와 같은 범위내에서 자동으로 업데이트한다. 이 방식은 꽤 다루기가 편해서 그동안 유용하게 사용하고 있었다.
Node.js도 그렇고 npm의 모듈은 모두 SemVer를 따르고 있다. SemVer는 MAJOR.MINOR.PATCH의 버저닝을 따르는데 각 의미는 다음과 같다.
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
즉, MAJOR 버전은 API의 호환성이 깨질만한 변경사항을 의미하고 MINOR 버전은 하위호환성을 지키면서 기능이 추가된 것을 의미하고 PATCH 버전은 하위호환성을 지키는 범위내에서 버그가 수정된 것을 의미한다.
캐럿(^)은 Node.js 모듈이 이 SemVer의 규약을 따른다는 것을 신뢰한다는 가정하에서 동작한다. 그래서 MINOR나 PATCH버전은 하위호환성이 보장되어야 하므로 업데이트를 한다.
- ^1.0.2 : >=1.0.2 <2.0
- ^1.0 : >=1.0.0 <2.0
- ^1 : >=1.0.0 <2.0
그래서 캐럿을 사용했을 때는 위와 같이 동작한다. 틸드와 비교해 보면 차이점은 명확한데 1.x.x내에서는 하위호환성이 보장되므로 그 내에서는 모두 업데이트하겠다는 의미이다.
하지만 여기에 예외사항이 있다. 다음 내용을 보자.
- ^0.1.2 : >=0.1.2 <0.2.0
- ^0.1 : >=0.1.0 <0.2.0
- ^0 : >=0.0.0 <1.0.0
- ^0.0.1 : ==0.0.1
버전이 1.0.0 미만인 경우(SemVer에서는 pre-release라고 부른다.)에는 상황이 다르다. 소프트웨어 대부분에서 1.0버전을 내놓기 전에는 API 변경이 수시로 일어난다. 그래서 0.1을 쓰다가 0.2를 사용하면 API가 모두 달라졌을 수 있다. 그래서 캐럿(^)을 사용할 때 0.x.x에서는 마치 틸드처럼 동작해서 지정한 버전 자릿수 내에서만 업데이트한다.(앞에 예시와 비교해보면 차이점을 알 수 있다.) 그리고 0.0.x인 경우에는 하위호환성 유지가 안 될 가능성이 더 높으므로 위의 마지막 예시처럼 지정한 버전만을 사용한다.
아래 블로그 내용 참고하여 그대로 따옴 ㄱㅅㄱㅅ!
https://blog.outsider.ne.kr/1041
'DEV > React' 카테고리의 다른 글
맥mac에 vscode(비주얼스튜디오코드) 설치 , 플러그인 설치 (2) | 2024.11.14 |
---|---|
[React yarn 실행하여 package.json 모듈설치 실행 에러해결] The engine "node" is incompatible with this module. (1) | 2024.11.12 |
리액트 개발에 필요한 도구들 설명 (0) | 2024.11.12 |
React(리액트) 개념과 사용성 : 리액트는 라이브러리 인가 ....? 프레임워크 인가....? (3) | 2024.11.11 |
[Do it 리액트 프로그래밍 정석] : 맥(mac) 리액트 개발환경 설치(정리X,두서X) (4) | 2024.11.09 |