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ę).

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.


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.