programing

바우어(및 npm) 버전 구문은 무엇입니까?

abcjava 2023. 5. 21. 10:43
반응형

바우어(및 npm) 버전 구문은 무엇입니까?

Bower를 사용하면 다음 구문을 사용하여 패키지에 대한 버전 요구 사항을 지정할 수 있습니다.

"dependencies": {
  "<name>": "<version>",
},

그러나 나는 무엇을 사용할 구문인지 찾을 수 없었습니다.<version>할 수 : 버을다같지수정있다습니할.

  • 버큰다보전이 있는 특정 보다 큼">1.0.0"
  • 버전이상:">=1.0.0"
  • 일부 또는일부범위:"1.0.0 - 2.0.0".

tilde를 버전 : 또한 타일포 있구것 알있다다습고니도는문이전버통공를드함는하▁i▁cont다니▁syntax있습▁tilde▁knowaining▁version▁the▁common▁is."~1.0.0"하지만 나는 그것이 무엇을 의미하는지 그리고 그것이 같은지 확신할 수 없습니다."=1.0.0".

또한 다음과 같이 연속되지 않은 버전을 여러 개 지정할 수 있는지 여부도 궁금합니다.1.0.3+ 음보 보다 큰 1.5.0기타...

간단히 말해서, Bower 버전 번호(및 NPM)에 대한 구문은 SemVer라고 하며, 이는 'SemVering'의 줄임말입니다.Bower 및 NPM에서 사용되는 SemVer의 자세한 구문에 대한 문서는 Node/npm 내의 Semverparser에 대한 API에서 찾을 수 있습니다.기본 사양에 대해 자세히 알아볼 수 있습니다(설명하지 않음).~또는 기타 구문 세부 정보)를 참조하십시오. semver.org .

여러분이 가지고 놀 수 있는 매우 편리한 시각적 셈버 계산기가 있어서 이 모든 것을 더 쉽게 더듬고 테스트할 수 있습니다.

SemVer는 단순한 구문이 아닙니다!그것은 API를 게시하는 올바른 방법에 대해 꽤 흥미로운 말들을 가지고 있는데, 이것은 구문이 무엇을 의미하는지 이해하는 데 도움이 될 것입니다.결정적으로:

공용 API를 식별하면 해당 API에 대한 변경 사항을 버전 번호에 대한 특정 증분으로 전달합니다.X.Y.Z(Major)의 버전 형식을 고려합니다.마이너.패치).API에 영향을 미치지 않는 버그 수정은 패치 버전을 증가시키고, 하위 호환 API 추가/변경은 하위 버전을 증가시키며, 하위 호환 API 변경은 하위 버전을 증가시킵니다.

그서래, 당의구인질문에 대한 구체적인 입니다.~그 소령과 관련이 있습니다.Minor 스키마. ( 연산자 Minor도 입니다.)Patch 스키마. (관련 캐럿 연산자도 마찬가지입니다.)^.) 를 사용할 수 있습니다.~다음 중 하나를 수락할 수 있는 버전 범위를 좁힙니다.

  • 동일한 부 버전에 대한 후속 패치 레벨 변경("API에 영향을 미치지 않는 버그 수정") 또는 다음과 같은 작업을 수행합니다.
  • 동일한 메이저 버전에 대한 후속 마이너 레벨 변경("역호환 가능한 API 추가/변경")

예를 들어, 1.2.x 트리에서 1.2.0부터 시작하지만 1.3.0 미만의 패치 수준 변경을 수행할 것임을 나타내려면 다음을 사용할 수 있습니다.

"angular": "~1.2"
  or:
"angular": "~1.2.0"

이렇게 하면 다음과 같은 결과를 얻을 수 있습니다..x 구문:

"angular": "1.2.x"

하지만, 당신은 타일을 사용할 수 있습니다.~구문을 더욱 구체적으로 설명합니다. 1.2.4에서 시작하지만 1.3.0보다 작은 패치 수준의 변경사항만 수락할 경우 다음을 사용할 수 있습니다.

"angular": "~1.2.4"

왼쪽으로 이동, 주 버전으로 이동, 만약 당신이...

"angular": "~1"

그것은 ...과 같습니다.

"angular": "1.x"
  or:
"angular": "^1.0.0"

...1.0.0 이상 2.0 미만의 마이너 또는 패치 레벨 변경 사항과 일치합니다.

위의 마지막 변형을 '카렛 범위'라고 합니다.그 캐럿은 끔찍하게 많이 닮았습니다.>따라서 "1.0.0보다 큰 모든 버전"을 의미한다고 생각하는 것은 용서받을 수 있습니다. (저는 확실히 그것에 대해 실수했습니다.)안 돼요!

캐럿 범위는 기본적으로 왼쪽에서 가장 중요한 숫자(일반적으로 주 버전)에만 관심이 있으며 왼쪽에서 가장 중요한 숫자에 영향을 미치지 않는 사소한 또는 패치 수준의 변경을 허용한다고 말하는 데 사용됩니다.그러나 주 버전을 지정하는 타일 범위와 달리 캐럿 범위를 사용하면 정확한 보조/패치 시작점을 지정할 수 있습니다.그래서 지금은 동안에.^1.0.0 === ~1 같캐 범위럿과 같은 ^1.2.3 사항이 하겠다고 말할 수 .>=1.2.3 && <2.0.0틸트 레인지로는 할 수 없습니다.

가까이서 보면 처음에는 모든 것이 혼란스러워 보입니다.하지만 잠시 축소하고 이런 식으로 생각해 보세요. 캐럿을 사용하면 왼쪽에 있는 중요한 숫자에 대해 가장 관심이 있다고 말할 수 있습니다. 타일을 사용하면 오른쪽 끝에 있는 숫자가 가장 중요하다고 말할 수 있습니다.나머지는 상세합니다.

사람들이 단순한 것보다 훨씬 더 많이 사용하는 이유를 설명하는 것은 타일과 캐럿의 표현력입니다..x구문: 단순히 더 많은 작업을 수행할 수 있습니다.그래서 어디서든 자주 사용되는 타일을 볼 수 있습니다..x를 들어, 자체 패키지를 하십시오.예를 들어, npm 자체: 자체 패키지를 참조하십시오.json 파일에는 많은 종속성이 포함되어 있습니다.~2.4.0 형이아가 2.4.x사용할 수 있는 형식입니다.고수함으로써~구문은 허용 가능한 시작 패치 번호에 관계없이 70개 이상의 버전 종속성 목록에서 일관됩니다.

어쨌든, SemVer에는 아직 더 많은 것이 있지만, 여기서 모든 것을 자세히 설명하려고 하지는 않겠습니다.노드 semver 패키지의 readme에서 확인하십시오.그리고 SemVer가 어떻게 작동하는지 연습하고 머리를 굴리는 동안 시맨틱 버전 계산기 사용해야 합니다.


RE: 연속되지 않은 버전 번호: OP의 마지막 질문은 연속되지 않은 버전 번호/범위를 지정하는 것입니다(제가 공정하게 편집했다면).예, 일반적인 이중 파이프 "또는" 연산자를 사용하여 이 작업을 수행할 수 있습니다.||이와 같은 경우:

"angular": "1.2 <= 1.2.9 || >2.0.0"

semver를 기준으로 사용할 수 있습니다.

  • X. - C 이범위 X.Y.Z - A.B. 1.2.3-2.3.4 >=1.2.3 <=2.3.4를 나타냄

  • X-범위 1.2.x 1.X 1.2.*

  • 틸데 산맥 ~1.2.3 ~1.2 패치 수준 변경 또는 사소한 버전 변경을 허용함을 나타냅니다.

  • 캐럿 범위 ^1.2.3 ^0.2.5 ^0.0.4

    [major, minor, patch] 튜플에서 가장 왼쪽에 0이 아닌 숫자를 수정하지 않는 변경을 허용

    • ^1.2.x > < (즉, >=1.2.0 < 2.0.0)
    • ^0.0.x, >0 <, >=0.0 <0.1.0)을 의미합니다.
    • ^0.0, >0 <, >=0.0 <0.1.0)을 의미합니다.

Bower는 semver 구문을 사용하지만 다음은 몇 가지 간단한 예입니다.

특정 버전을 설치할 수 있습니다.

$ bower install jquery#1.11.1

~를 사용하여 '이것으로 시작하는 모든 버전'을 지정할 수 있습니다.

$ bower install jquery#~1.11

여러 버전 요구 사항을 함께 지정할 수 있습니다.

$ bower install "jquery#<2.0 >1.10"

은 또한 있다니습수도를 할 수 .latest사용 가능한 최신 버전을 설치하는 키워드:

  "dependencies": {
    "fontawesome": "latest"
  }

번호, 만약패번없다면가가 없는 ,~추가하는 것과 같습니다..x타일이 아닌 버전으로.번호인 패치번있면으가 있으면,~>= 지정된 패치 번호를 모두 허용합니다.

~1     := 1.x
~1.2   := 1.2.x
~1.2.3 := (>=1.2.3 <1.3.0)

승인된 답변에 대해 설명할 만한 포인트가 부족하지만 일부 타일 정보가 연결된 semver 문서와 충돌합니다."angular": "~1.2"1.3, 1.4, 1.4.9와 일치하지 않습니다.또한."angular": "~1"그리고."angular": "~1.0"동등하지 않습니다.이것은 npm semver 계산기로 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/19030170/what-is-the-bower-and-npm-version-syntax

반응형