내 composer.json 파일에서 물결표 (~)는 무엇을 의미합니까?


115

내 composer.json 파일에 다음 줄이 있습니다.

"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},

물결표 ~~2.0@dev정확히 무엇을 의미합니까? 것을이 자리가 항상 같은 전복 가져올 것이다 1.2.0, 2.2.0, 3.2.0등을? 의미가 없습니다 ( *와일드 카드에 의해 수행됨 ).

composer.json 문서는 물결표에 대해 아무것도 말해주지 않습니다.

Symfony 블로그에서 보안 문제에 대해 방금 읽었으며 버전 1.3.3으로 업그레이드 할 것을 권장 했기 때문에 묻습니다 . 그러나 FOSUserBundle의 버전을 알아내는 것은 쉽지 않습니다 (버전이 포함 된 파일을 찾을 수 없습니다).

답변:


142

물결표는 다음 중요한 릴리스를 의미 합니다. 귀하의 경우에는 >= 2.0, < 3.0.

전체 설명은 Tilde 버전 범위 문서 페이지에 있습니다 .

~가장 예에 의해 설명한다 연산자 : ~1.2동등 >=1.2 <2.0.0하면서 ~1.2.3동일하다 >=1.2.3 <1.3.0.

그것을 보는 또 다른 방법은 using ~이 최소 버전 을 지정하지만 지정된 마지막 숫자가 올라갈 수 있도록 허용한다는 것입니다.

Seldeak의 아래 주석은 Composer 문서에 대한 간단한 요약 설명입니다.


73
내가 말하고 싶은 간단한 규칙은 ~를 사용하면 마지막 숫자가 올라갈 수 있다는 것입니다. 예 : ~2.22.2 및 x가 2 이상인 모든 2.x를 의미합니다. ~2.1.3on은 x가 3 이상인 2.1.x이기도합니다.
Seldaek 2013-09-24

2
~2.0와는 어떻게 다릅니 2.*까? 마지막 숫자가 0이 아닌 경우에만 유용합니까?
Jesse

24
~ 2.0 및 2. *는 동일하지만 ~ 2.3 및 2. *는 다릅니다. ~ 2.3은 2.3 미만의 버전을 허용하지 않는 반면 2. *는 2.0, 2.1, 2.2 등을 허용합니다.
AlterPHP 2015 년

2

Tilde연산자는 semantic versioning스키마를 사용하여 라이브러리를 버전 화하는 프로젝트에 유용합니다 .

Semantic versioning을 평가하는 지침에 가깝습니다 next significant release.

Composer의 경우이 연산자는 설치업데이트하는 동안 주 버전 (역 호환되지 않을 수 있음)을 허용하지 않고 부 릴리스 (패치 포함 가능)를 허용 함을 의미합니다. .

예 : ~4.1프로젝트 버전을 허용 >=4.1하지만<5.0 .

크레딧 : http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php


0

물결표 ~~2.0@dev 정확히 즉각적인 버전으로 올라가는 것을 의미합니다.

예 :

우리가 가지고 있다면 ~2.0@dev바로 다음 버전으로 이동 => ~2.x@dev

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.