node
와 npm
업그레이드한 후 npm install moment --save
시도했습니다. 캐럿 ^
접두사 package.json
항목을 저장합니다. 이전에는 물결표 ~
접두사였습니다.
-
npm
에서 이러한 변경 사항이 적용된 이유는 무엇입니까? -
~
와 캐럿^
의 차이점은 무엇인가요? - 다른 사람에 비해 장점은 무엇입니까?
질문자 :Fizer Khan
node
와 npm
업그레이드한 후 npm install moment --save
시도했습니다. 캐럿 ^
접두사 package.json
항목을 저장합니다. 이전에는 물결표 ~
접두사였습니다.
npm
에서 이러한 변경 사항이 적용된 이유는 무엇입니까?~
와 캐럿 ^
의 차이점은 무엇인가요?답변자 : jgillich
NPM 문서 및 semver 문서를 참조하십시오.
~version
"대략 버전과 동일" , 부 버전을 증가시키지 않고 모든 향후 패치 버전으로 업데이트합니다. ~1.2.3
은 1.2.3에서 <1.3.0까지의 릴리스를 사용합니다.
^version
"버전과 호환 가능" 은 주 버전을 증가시키지 않고 향후 모든 부/패치 버전으로 업데이트합니다. ^2.3.4
는 2.3.4에서 <3.0.0까지의 릴리스를 사용합니다.
특히 ^0.2.3과 같은 이전 버전 에 대한 예외는 아래 주석을 참조하십시오.
답변자 : Ahmad
질문에 언급된 것을 포함하여 버전 특이성에 대한 모든 방법을 설명하는 공식 npmjs 문서도 추가하고 싶습니다.
값 | 설명 |
---|---|
~version | "버전과 거의 동일" npm semver 참조 - 물결표 범위 |
^version | "버전과 호환" npm semver - 캐럿 범위 참조 |
version | 버전과 정확히 일치해야 합니다. |
>version | 버전보다 커야 합니다. |
>=version | 등 |
<version | |
<=version | |
1.2.x | 1.2.0, 1.2.1 등(1.3.0 제외) |
* | 모든 버전과 일치 |
latest | 최신 릴리스를 얻습니다 |
위의 목록은 완전하지 않습니다. 다른 버전 지정자에는 GitHub URL 및 GitHub 사용자 저장소, 특정 npm 태그가 있는 로컬 경로 및 패키지가 포함됩니다.
답변자 : pspi
npm을 사용하면 지정된 패키지보다 최신 버전의 패키지를 설치할 수 있습니다. 물결표( ~
)를 사용하면 버그 수정 릴리스가 제공되고 캐럿( ^
)을 사용하면 이전 버전과 호환되는 새 기능도 제공됩니다.
문제는 이전 버전이 일반적으로 버그 수정을 그렇게 많이 받지 않기 때문에 npm이 --save의 기본값으로 ^
--save
입니다.
"Semver가 설명했습니다. 내 package.json에 캐럿(^)이 있는 이유는 무엇입니까?" .
규칙이 1.0.0 이상 버전에 적용되지 모든 프로젝트가 의미 버전을 다음 있습니다. 버전 0.xx의 경우 캐럿은 패치 업데이트만 허용합니다. 즉, 물결표와 동일하게 작동합니다. "캐럿 범위"를 참조하십시오.
다음은 개념에 대한 시각적 설명입니다.
출처: "시맨틱 버전 관리 치트시트" .
답변자 : rofrol
<major>.<minor>.<patch>-beta.<beta> == 1.2.3-beta.2
1.2.3
.^
(머리처럼)를 사용합니다. 왼쪽에서 0이 아닌 두 번째 수준에서 업데이트를 허용합니다. ^0.2.3
은 0.2.3 <= v < 0.3
합니다.~
(꼬리와 같은)를 사용합니다. 일반적으로 가장 오른쪽 레벨을 고정하거나 생략하면 0으로 설정합니다.~1
은 1.0.0 <= v < 2.0.0
~1.2
는 1.2.0 <= v < 1.3.0
합니다.~1.2.4
는 1.2.4 <= v < 1.3.0
합니다.0.2
는 0.2 <= v < 1
합니다. 다음과 같은 이유로 ~
0
시작 메이저 레벨을 설정하고 업데이 트를 허용
* or "(empty string) any version 1 v >= 1
주요 수준 동결
~0 (0) 0.0 <= v < 1 0.2 0.2 <= v < 1 // Can't do that with ^ or ~ ~1 (1, ^1) 1 <= v < 2 ^1.2 1.2 <= v < 2 ^1.2.3 1.2.3 <= v < 2 ^1.2.3-beta.4 1.2.3-beta.4 <= v < 2
프리즈 마이너 레벨
^0.0 (0.0) 0 <= v < 0.1 ~0.2 0.2 <= v < 0.3 ~1.2 1.2 <= v < 1.3 ~0.2.3 (^0.2.3) 0.2.3 <= v < 0.3 ~1.2.3 1.2.3 <= v < 1.3
패치 수준 동결
~1.2.3-beta.4 1.2.3-beta.4 <= v < 1.2.4 (only beta or pr allowed) ^0.0.3-beta 0.0.3-beta.0 <= v < 0.0.4 or 0.0.3-pr.0 <= v < 0.0.4 (only beta or pr allowed) ^0.0.3-beta.4 0.0.3-beta.4 <= v < 0.0.4 or 0.0.3-pr.4 <= v < 0.0.4 (only beta or pr allowed)
업데이트 금지
1.2.3 1.2.3 ^0.0.3 (0.0.3) 0.0.3
주의 사항 : 메이저, 마이너, 패치 누락 또는 지정 beta
수없이은과 동일 any
누락 된 수준.
주의 0
패키지를 설치하면 업데이트는 새로운 베타/pr 레벨 버전만 설치합니다! npm
package.json
^
을 기본값으로 설정하고 설치된 버전이 0.1.3
과 같을 때 모든 메이저/마이너/패치 레벨을 고정하기 때문입니다.
답변자 : alex
첫 번째 숫자("주")가 1 이상인 한:
~
메이저 번호와 마이너 번호를 잠급니다. 버그 수정(세 번째 숫자의 증가)만 수락할 준비가 되었지만 기능을 추가하는 사소한 업그레이드는 제외하고 다른 변경은 원하지 않을 때 사용됩니다.
^
주요 번호만 잠급니다. 버그 수정(세 번째 숫자 증분) 및 기능을 추가하지만 기존 코드를 손상시키지 않는 마이너 업그레이드(두 번째 숫자 증분)를 받고자 할 때 사용됩니다. 그러나 기존 코드를 손상시키는 변경 사항은 원하지 않습니다(첫 번째 숫자의 증가).
또한 ^
는 이전 npm 버전에서 지원되지 않으므로 주의해서 사용해야 합니다.
따라서 ^
는 좋은 기본값이지만 완벽하지는 않습니다. 가장 유용한 semver 연산자를 신중하게 선택하고 구성하는 것이 좋습니다.
("수정"과 "버그 수정"을 혼동하는 "수정" 사용과 함께 사용하지 않도록 수정됨)
답변자 : haotang
~
: 적당히 가깝다
~1.1.5: 1.1.0 <= accepted < 1.2.0
^
: 호환
^1.1.5: 1.1.5 <= accepted < 2.0.0 ^0.1.3: 0.1.3 <= accepted < 0.2.0 ^0.0.4: 0.0.4 <= accepted < 0.1.0
답변자 : Will Stern
^
는 1.[임의].[임의](최신 부 버전)
~
is 1.2.[any](최신 패치)
semver가 npm에 적용되는 방법에 대한 이 블로그 게시물 을 잘 읽어보세요.
semver 표준 과 일치하도록 하기 위해 무엇을 하고 있는지
http://blog.npmjs.org/post/98131109725/npm-2-0-0
답변자 : Laxmi
~ 물결표:
~
메이저 번호와 마이너 번호를 고정합니다.^ 캐럿:
^
주요 번호만 고정합니다.답변자 : catamphetamine
^0.1.2
를 0.2.0
업데이트하지 않기 때문에 "깨진" 것으로 간주될 수 있습니다. 소프트웨어가 등장할 때 0.xy
버전을 사용하고 모자 일치는 마지막 가변 숫자( y
)와만 일치합니다. 이것은 의도적으로 수행됩니다. 그 이유는 소프트웨어가 발전하는 동안 API가 빠르게 변하기 때문입니다. 어느 날에는 이러한 방법이 있고 다른 날에는 이러한 방법이 있고 이전 방법은 사라졌습니다. 이미 라이브러리를 사용하고 있는 사람들을 위해 코드를 깨고 싶지 않다면 주 버전을 증가시키십시오(예: 1.0.0
-> 2.0.0
-> 3.0.0
. 따라서 소프트웨어가 마침내 100% 완성되고 완전한 기능을 11.0.0
버전 11.0.0과 같을 것이며 그다지 의미가 없어 보이고 실제로는 혼란스러워 보입니다. 반면에 0.1.x
-> 0.2.x
-> 0.3.x
버전을 사용하고 있다면 소프트웨어가 마침내 100% 완료되고 완전한 기능을 1.0.0
"이 릴리스는 장기 서비스 버전입니다. 계속 진행하여 프로덕션 코드에서 이 버전의 라이브러리를 사용할 수 있으며 작성자는 내일이나 다음 달에 모든 것을 변경하지 않을 것이며 패키지를 포기하지 않을 것입니다."
규칙은 다음과 같습니다. 0.xy
버전 관리를 사용하고 공용 API가 변경될 때 중간 숫자를 증가 ^0.1.0
0.2.0
업데이트를 받지 않고 업데이트되지 않습니다. t 그들의 코드를 깨). 그런 다음 소프트웨어가 완성되면 1.0.0
미만으로 릴리스하고 공개 API가 변경될 때마다 맨 왼쪽 숫자를 증가시키십시오(따라서 ^1.0.0
을 2.0.0
업데이트를 받지 않고 코드를 손상시키지 않습니다).
Given a version number MAJOR.MINOR.PATCH, increment the: 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.
답변자 : Avinash
하나의 라이너 설명
표준 버전 관리 시스템은 major.minor.build입니다(예: 2.4.1).
npm은 이러한 문자를 기반으로 특정 패키지의 버전을 확인하고 수정합니다.
~ : 주 버전이 수정됨, 부 버전이 수정됨, 모든 빌드 번호와 일치함
예 : ~2.4.1은 2.4.x를 확인한다는 것을 의미합니다. 여기서 x는 아무거나입니다.
^ : 주 버전이 수정되고 모든 부 버전과 일치하며 모든 빌드 번호와 일치합니다.
예 : ^2.4.1은 2.xx를 확인한다는 것을 의미합니다. 여기서 x는 무엇이든 상관없습니다.
답변자 : Mudassir
물결표 ~ 는 부 버전과 일치합니다. 1.4.2가 포함된 패키지를 설치했고 설치 후 버전 1.4.3 및 1.4.4도 사용할 수 있습니다. package.json에서 ~1.4.2로 사용된 다음 npm install 업그레이드 후 프로젝트에 1.4.4가 프로젝트에 설치됩니다. 그러나 해당 패키지에 사용할 수 있는 1.5.0이 있으면 ~에 의해 설치되지 않습니다. 마이너 버전이라고 합니다.
캐럿 ^ 는 주 버전과 일치합니다. 프로젝트에 1.4.2 패키지가 설치되어 있고 설치 1.5.0이 릴리스된 후 ^는 주 버전을 설치합니다. ^1.4.2 가 있는 경우 2.1.0을 설치할 수 없습니다.
당신이 다음 특수 문자 예 : "1.4.2"에서 고정 버전을 사용하는 각 설치에 대한 패키지의 변경 버전으로 원하지 않는 경우 버전을 고정
최신 버전 * 최신 버전을 설치하려면 패키지 이름 앞에 *만 사용하십시오.
답변자 : Abdou Sameh
package.json에서 물결표(~)와 캐럿(^)을 본 적이 있을 것입니다. 이들의 차이점은 무엇인가요?
npm install moment --save 를 하면 캐럿(^) 접두사를 사용하여 package.json에 항목을 저장합니다.
가장 간단한 용어로 물결표(~)는 가장 최근의 부 버전(가운데 번호)과 일치합니다. ~1.2.3은 모든 1.2.x 버전과 일치하지만 1.3.0은 누락됩니다.
반면에 캐럿(^)은 더 느슨합니다. 최신 주요 버전(첫 번째 번호)으로 업데이트합니다. ^1.2.3은 1.3.0을 포함한 모든 1.xx 릴리스와 일치하지만 2.0.0에서는 보류됩니다.
참조: https://medium.com/@Hardy2151/caret-and-tilde-in-package-json-57f1cbbe347b
답변자 : ireshika piyumalie
semver는 점으로 구분되는 3개의 주요 섹션으로 구분됩니다.
major.minor.patch 1.0.0
이러한 다른 메이저, 마이너 및 패치는 다른 릴리스를 식별하는 데 사용됩니다. tide(~) 및 캐럿(^)은 패키지 버전 관리에 사용할 부 및 패치 버전을 식별하는 데 사용됩니다.
~1.0.1 Install 1.0.1 or **latest patch versions** such as 1.0.2 ,1.0.5 ^1.0.1 Install 1.0.1 or **latest patch and minor versions** such as 1.0.2 ,1.1.0 ,1.1.1
답변자 : Farhan Yaseen
물결표(~)
주 버전이 수정됨, 부 버전이 수정됨, 모든 빌드 번호와 일치함
"express": "~4.13.3"
~4.13.3
4.13.3은 x가 임의이고 4.14.0인 4.13.x를 확인한다는 의미입니다.
캐럿(^)
주 버전이 고정되어 있고 모든 부 버전과 일치하며 모든 빌드 번호와 일치합니다.
"supertest": "^3.0.0"
^3.0.0
은 x가 무엇이든 되는 3.xx를 확인한다는 의미입니다.
답변자 : Rajashekhar Reddy
버전 번호는 각 섹션을 다른 의미로 지정하는 구문입니다. 구문은 점으로 구분된 세 부분으로 나뉩니다.
Major.minor.patch 1.0.2
메이저, 마이너 및 패치는 패키지의 다른 릴리스를 나타냅니다.
npm은 물결표(~)와 캐럿(^)을 사용하여 각각 사용할 패치와 부 버전을 지정합니다.
따라서 ~1.0.2가 표시되면 버전 1.0.2 또는 1.0.4와 같은 최신 패치 버전을 설치한다는 의미입니다. ^1.0.2가 보이면 버전 1.0.2 또는 1.1.0과 같은 최신 마이너 또는 패치 버전을 설치한다는 의미입니다.
답변자 : ElasticCode
캐럿 ^
동일한 주요 범위의 특정 버전보다 큰 모든 것을 포함합니다.
물결표 ~
동일한 부 범위에서 특정 버전보다 큰 모든 것을 포함합니다.
예를 들어 허용 가능한 버전 범위를 1.0.4까지 지정하려면 다음 구문을 사용합니다.
시맨틱 버전 관리 구문에 대한 자세한 내용은 npm semver 계산기를 참조하십시오.
npm 문서에서 더 많은 정보 의미 체계 버전 관리 정보
답변자 : milan.latinovic
이 질문과 관련하여 버전에 대한 Composer 설명서를 검토할 수 있지만 간단히 요약하면 다음과 같습니다.
따라서 Tilde 를 사용하면 패치의 자동 업데이트를 얻을 수 있지만 부 및 주 버전은 업데이트되지 않습니다. 그러나 Caret 을 사용하면 패치와 부 버전을 얻을 수 있지만 주요(중단 변경 사항) 버전은 얻을 수 없습니다.
물결표 버전은 "더 안전한" 접근 방식으로 간주되지만 신뢰할 수 있는 종속성(잘 유지 관리되는 라이브러리)을 사용하는 경우 Caret 버전에 문제가 없어야 합니다(사소한 변경으로 인해 변경 사항이 중단되지 않아야 하기 때문입니다.
답변자 : Jesse Chisholm
답 자체가 아니라 간과된 것으로 보이는 관찰입니다.
캐럿 범위에 대한 설명:
참조: https://github.com/npm/node-semver#caret-ranges-123-025-004
[major, minor, patch] 튜플에서 가장 왼쪽의 0이 아닌 숫자를 수정하지 않는 변경을 허용합니다.
^10.2.3
10.2.3 <= v < 20.0.0
과 일치함을 의미합니다.
나는 그것이 그들이 의미하는 것이라고 생각하지 않습니다. 버전 11.xx에서 19.xx를 가져오면 코드가 손상됩니다.
left most non-zero number field
를 의미했다고 생각합니다. SemVer에는 숫자 필드가 한 자리 수를 요구하는 것이 없습니다.
답변자 : neeraj-dixit27
~ 마이너 버전 릴리스에 대한 지정 ^ 메이저 버전 릴리스에 지정
예를 들어 패키지 버전이 4.5.2인 경우 업데이트 ~4.5.2는 최신 4.5.x 버전(MINOR VERSION)을 설치합니다 ^4.5.2는 최신 4.xx 버전(MAJOR VERSION)을 설치합니다
출처 : Here
출처 : http:www.stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json">
JavaScript에서 타임스탬프를 어떻게 얻습니까? (0) | 2021.09.28 |
---|---|
Docker는 가상 머신과 어떻게 다릅니까? (0) | 2021.09.28 |
Git 리포지토리에 빈 디렉터리를 추가하려면 어떻게 해야 합니까? (0) | 2021.09.28 |
목록 목록에서 평면 목록을 만드는 방법 (0) | 2021.09.28 |
Git에서 모든 원격 분기를 복제하는 방법은 무엇입니까? (0) | 2021.09.26 |