Co oznacza tylda (~) w moim pliku composer.json?

115

Mam ten wiersz w moim pliku composer.json:

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

Co oznacza tylda ~w ~2.0@devdokładnie oznacza? Jest to, że zastępczy i powinien zawsze pobierać subversions jak 1.2.0, 2.2.0, 3.2.0i tak dalej? Nie ma sensu (i zostanie zrobione przez *symbol wieloznaczny).

Dokumentacja composer.json nie mówi nic o tyldie.

Pytam, bo właśnie przeczytałem o problemie bezpieczeństwa na blogu Symfony i zalecają aktualizację do wersji 1.3.3. Ale ustalenie wersji FOSUserBundle nie jest takie łatwe (nie mogłem znaleźć pliku, który zawiera tę wersję).

Gottlieb Notschnabel
źródło

Odpowiedzi:

142

Tilde to kolejne znaczące wydawnictwo . W twoim przypadku jest to odpowiednik >= 2.0, < 3.0.

Pełne wyjaśnienie znajduje się na stronie dokumentacji Tilde Version Range :

~Operator jest najlepiej wyjaśnione np ~1.2odpowiada >=1.2 <2.0.0, a ~1.2.3jest równoważna >=1.2.3 <1.3.0.

Innym sposobem patrzenia na to jest to, że użycie ~określa minimalną wersję, ale pozwala na zwiększenie ostatniej określonej cyfry.

Poniższy komentarz Seldeak'a to proste podsumowanie wyjaśnienia dokumentacji Composera.

AlterPHP
źródło
73
Prosta praktyczna zasada, którą lubię ująć, polega na tym, że ~ pozwala na zwiększenie ostatniej cyfry. np. ~2.2oznacza 2.2 i dowolne 2.x, gdzie x wynosi 2 lub więcej. ~2.1.3na jest również dowolne 2.1.x, gdzie x to 3 lub więcej.
Seldaek,
2
Czym się ~2.0różni od 2.*? Czy jest to przydatne tylko wtedy, gdy ostatnia cyfra nie jest 0?
Jesse
24
~ 2.0 i 2. * są takie same, ALE ~ 2.3 i 2. * są różne, ponieważ ~ 2.3 nie zezwala na wersje poniżej 2.3, podczas gdy 2. * dopuszcza wersje 2.0, 2.1, 2.2 itd.
AlterPHP
2

Tildeoperator jest przydatny dla projektów, które wersjonują swoje biblioteki za pomocą semantic versioningschematu.

Semantic versioningjest bardziej wskazówką, która ocenia się zgodnie z next significant release.

W przypadku Composera ten operator oznacza zezwolenie na mniejsze wersje (które mogą zawierać poprawki) bez zezwolenia na wersję główną (która może nie być kompatybilna wstecz) podczas instalacji i aktualizacji .

Na przykład: ~4.1zezwoli na wersje projektu, >=4.1ale <5.0.

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

Pranav Rana
źródło
0

Tylda ~w ~2.0@dev dokładnie średnią iść w górę do najbliższej wersji:

Na przykład :

Jeśli mamy ~2.0@dev, przechodzi do następnej wersji => ~2.x@dev

Selim Reza
źródło