Apa arti tilde (~) dalam file composer.json saya?

115

Saya memiliki baris ini di file composer.json saya:

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

Apa yang tilde ~di ~2.0@devsebenarnya artinya? Apakah itu placeholder dan akan selalu mengambil subversions seperti 1.2.0, 2.2.0, 3.2.0dan sebagainya? Tidak masuk akal (dan akan dilakukan oleh *wildcard).

The dokumentasi composer.json tidak mengatakan apa-apa tentang tilde.

Saya bertanya karena saya baru saja membaca tentang masalah keamanan di blog Symfony dan mereka merekomendasikan untuk meningkatkan ke versi 1.3.3. Tetapi mencari tahu versi FOSUserBundle tidaklah mudah (saya tidak dapat menemukan file yang berisi versi tersebut).

Gottlieb Notschnabel
sumber

Jawaban:

142

Tilde berarti rilis signifikan berikutnya . Dalam kasus Anda, ini setara dengan >= 2.0, < 3.0.

Penjelasan selengkapnya ada di halaman dokumen Tilde Version Range :

The ~operator terbaik dijelaskan dengan contoh: ~1.2setara dengan >=1.2 <2.0.0, sedangkan ~1.2.3setara dengan >=1.2.3 <1.3.0.

Cara lain untuk melihatnya adalah bahwa using ~menentukan versi minimum, tetapi memungkinkan digit terakhir yang ditentukan naik.

Komentar Seldeak di bawah ini adalah ringkasan penjelasan dari dokumentasi Composer.

AlterPHP
sumber
73
Aturan praktis sederhana yang saya suka katakan adalah bahwa ~ memungkinkan digit terakhir naik. misalnya ~2.2berarti 2.2 dan 2.x mana saja di mana x adalah 2 atau lebih. ~2.1.3di atas juga ada 2.1.x di mana x adalah 3 atau lebih.
Seldaek
2
Apa ~2.0bedanya dengan 2.*? Apakah hanya berguna jika digit terakhir bukan 0?
Jesse
24
~ 2.0 dan 2. * adalah sama TAPI ~ 2.3 dan 2. * berbeda karena ~ 2.3 tidak mengizinkan versi di bawah 2.3 sedangkan 2. * mengizinkan 2.0, 2.1, 2.2, dll
AlterPHP
2

Tildeoperator berguna untuk proyek yang membuat versi library mereka menggunakan semantic versioningskema.

Semantic versioning lebih merupakan pedoman yang mengevaluasi ke next significant release .

Untuk Komposer, operator ini bermaksud mengizinkan rilis minor (yang dapat menyertakan tambalan) tanpa mengizinkan versi mayor (yang mungkin tidak kompatibel ke belakang) saat menginstal dan memperbarui .

Misalnya: ~4.1akan mengizinkan versi proyek >=4.1tetapi<5.0 .

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

Pranav Rana
sumber
0

Tilde ~di ~2.0@dev persis berarti naik untuk versi segera:

Sebagai contoh :

Jika kita sudah memilikinya ~2.0@devsegera naik ke versi berikutnya => ~2.x@dev

Selim Reza
sumber