Що означає tilde (~) у моєму файлі 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

Tilde означає наступний значний реліз . У вашому випадку це рівнозначно >= 2.0, < 3.0.

Повне пояснення розміщено на сторінці документів "Tilde Version Range" :

~Оператор найкраще пояснити на прикладі: ~1.2еквівалентно >=1.2 <2.0.0, в той час як ~1.2.3це еквівалентно >=1.2.3 <1.3.0.

Ще один спосіб дивитися на це полягає в тому, що використання ~вказує мінімальну версію, але дозволяє останню цифру, вказану, підніматися вгору.

Нижній коментар Seldeak є простим підсумковим поясненням документації композитора.


73
Простий спосіб, який я хотів би сказати, - це те, що ~ дозволяє остання цифра підніматися вгору. наприклад, ~2.2означає 2.2 та будь-який 2.x, де x дорівнює 2 або вище. ~2.1.3на а також є будь-який 2.1.x, де x дорівнює 3 або вище.
Seldaek

2
Як ~2.0відрізняється 2.*? Чи корисно лише, якщо остання цифра не дорівнює 0?
Джессі

24
~ 2.0 і 2. * однакові, але НЕ ~ 2.3 і 2. * відрізняються тим, що ~ 2.3 не дозволяє версії нижче 2.3, тоді як 2. * дозволяє 2.0, 2.1, 2.2 і т.д.
AlterPHP

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.