나는 안정적인 최신으로 업그레이드 한 후 node
그리고 npm
, 나는 시도했다 npm install moment --save
. package.json
캐럿 ^
접두사를 사용 하여 항목을 저장합니다 . 이전에는 물결표 ~
접두사였습니다.
- 왜 이러한 변경이 이루어
npm
집니까? - 물결표
~
와 캐럿 의 차이점은 무엇입니까^
? - 다른 사람보다 장점이 무엇입니까?
답변
참고 항목 NPM의 문서 및 semver 문서를
~ version“대략 버전과 동일”, 부 버전을 늘리지 않고 향후 모든 패치 버전으로 업데이트합니다. ~1.2.3
1.2.3에서 <1.3.0까지의 릴리스를 사용합니다.
^ 버전“호환 가능”은 주 버전을 증가시키지 않고 향후 모든 부 / 패치 버전으로 업데이트합니다. ^2.3.4
2.3.4에서 <3.0.0까지의 릴리스를 사용합니다.
아래의 주석을 참조하십시오.
답변
질문에 언급 된 방법을 포함하여 버전 특이성에 대한 모든 방법을 설명하는 공식 npmjs 설명서를 추가하고 싶습니다.
https://docs.npmjs.com/files/package.json
https://docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
~version
“버전과 대략 동일” npm semver 참조 -Tilde Ranges & semver (7)^version
“버전과 호환” npm semver 참조 -Caret Ranges & semver (7)version
버전과 정확히 일치해야합니다>version
버전보다 커야합니다>=version
기타<version
<=version
1.2.x
1.2.0, 1.2.1 등 1.3.0이 아님http://sometarballurl
(타르볼의 URL 일 수 있으며 로컬로 다운로드하여 설치됩니다.*
모든 버전과 일치latest
최신 릴리스를 얻습니다
위의 목록은 완전한 것이 아닙니다. 다른 버전 지정자에는 GitHub URL 및 GitHub 사용자 저장소, 특정 npm 태그가있는 로컬 경로 및 패키지가 포함됩니다.
답변
npm을 사용하면 지정된 것보다 최신 버전의 패키지를 설치할 수 있습니다. 물결표 ( ~
)를 사용하면 버그 수정 릴리스가 제공되고 캐럿 ( ^
)은 이전 버전과 호환되는 새로운 기능도 제공합니다.
문제는 이전 버전은 대개 버그 수정을 많이받지 않으므로 npm은 caret ( ^
)를 기본값으로 사용합니다 --save
.
에 따르면 : “Semver 설명 – 내 package.json에 캐럿 (^)이 왜?” .
참고 규칙이 1.0.0 이상 버전에 적용되지 모든 프로젝트가 의미 버전을 다음 있음. 버전 0.xx의 경우 캐럿은 패치 업데이트 만 허용 합니다. 즉, 물결표와 동일하게 동작합니다. “캐럿 범위” 참조
다음은 개념에 대한 시각적 설명입니다.
답변
셈버
<major>.<minor>.<patch>-beta.<beta> == 1.2.3-beta.2
- 테스트 에는 npm semver 계산기 를 사용하십시오 . (^ (같은 주요 범위의 특정 버전보다 큰 모든 것을 포함) 및 ~ (동일한 작은 범위의 특정 버전보다 큰 모든 것을 포함)에 대한 설명은 100 % 정확하지 않지만 계산기는 제대로 작동하는 것 같습니다 )
- 또는 SemVer Check를 대신 사용 하면 패키지를 선택할 필요가없고 설명도 제공합니다.
변경 허용 또는 금지
- 핀 버전 :
1.2.3
. ^
머리와 같은 것을 사용하십시오 . 왼쪽에서 0이 아닌 두 번째 수준의 업데이트를 허용합니다.^0.2.3
means0.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
그것은 모든 주요 / 마이너 / 패치 수준을 정지.
답변
~
주요 및 부수를 수정합니다. 종속성에서 버그 수정을 수용 할 준비가되었지만 호환되지 않는 변경을 원하지 않는 경우에 사용됩니다.
^
주요 번호 만 수정합니다. 의존성을 면밀히 관찰 할 때 사용되며 부 릴리스가 호환되지 않는 경우 코드를 빠르게 변경할 수 있습니다.
그 외에도 ^
되어 지원되지 않는 오래된 NPM 버전으로,주의를 요합니다.
따라서 ^
좋은 기본값이지만 완벽하지는 않습니다. 가장 유용한 semver 연산자를 신중하게 선택하고 구성하는 것이 좋습니다.
답변
~
: 합리적으로 가까이 에
~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
답변
^
1. [any]. [any] (최신 부 버전)
~
는 1.2입니다. [any] (최신 패치)
semver가 npm에 적용되는 방법
과 semver 표준 http://blog.npmjs.org/post/98131109725/npm-2-0-0에 맞추기 위해 수행하는 작업 에 대한 블로그 게시물 을 읽어보십시오.