Composer.json dosyamdaki tilde (~) ne anlama geliyor?


115

Composer.json dosyamda bu satır var:

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

Tilde ne yok ~içinde ~2.0@devtam olarak yani? Bu bir yer tutucudur ve her zamanki gibi subversions getirelim 1.2.0, 2.2.0, 3.2.0vb? Mantıklı değil (ve *joker karakterle yapılacaktır).

Composer.json dokümantasyon tildeli hakkında hiçbir şey söylemez.

Soruyorum çünkü Symfony blogunda bir güvenlik sorunu hakkında bir şeyler okudum ve 1.3.3 sürümüne yükseltmeyi öneriyorlar. Ancak FOSUserBundle'ın sürümünü bulmak o kadar kolay değil (sürümü içeren bir dosya bulamadım).

Yanıtlar:


142

Tilde, bir sonraki önemli sürüm anlamına gelir . Sizin durumunuzda eşdeğerdir >= 2.0, < 3.0.

Tam açıklama Tilde Sürüm Aralığı belgeler sayfasındadır :

~İyi örneği ile açıklanabilir operatörü: ~1.2eşdeğerdir >=1.2 <2.0.0iken, ~1.2.3eşdeğerdir >=1.2.3 <1.3.0.

Buna bakmanın başka bir yolu, kullanmanın ~minimum bir sürümü belirtmesidir, ancak belirtilen son basamağın yukarı çıkmasına izin verir.

Seldeak'ın aşağıdaki yorumu, Composer belgelerinin basit bir özet açıklamasıdır.


73
Basit bir pratik kural, söylemek istediğim, ~ 'nin son basamağın yukarı gitmesine izin vermesidir. örneğin ~2.2, 2.2 ve x'in 2 veya üzeri olduğu herhangi bir 2.x anlamına gelir. ~2.1.3üzerinde ayrıca x'in 3 veya üzeri olduğu herhangi bir 2.1.x.
Seldaek

2
Nasıl ~2.0farklıdır 2.*? Sadece son rakam 0 değilse işe yarar mı?
Jesse

24
~ 2.0 ve 2. * aynı ANCAK ~ 2.3 ve 2. * farklıdır çünkü ~ 2.3, 2.3'ün altındaki sürümlere izin
vermezken

2

Tildeoperatörü, kütüphanelerini semantic versioningşema kullanarak versiyonlayan projeler için kullanışlıdır .

Semantic versioningdaha çok bir kılavuzdur next significant release.

Composer için bu operatör, yükleme ve güncelleme sırasında büyük bir sürüme (geriye dönük olarak uyumlu olmayabilir) izin vermeden küçük sürümlere (yamalar içerebilen) izin vermek anlamına gelir .

Örneğin: ~4.1proje sürümlerine izin verir >=4.1ama <5.0.

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


0

Tilde ~içinde ~2.0@dev tam olarak ortalama anlık sürümü için yukarı çıkmak:

Örneğin :

Elimizde varsa ~2.0@devhemen bir sonraki sürüme geçer. => ~2.x@dev

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.