Özetle, Bower sürüm numaraları (ve NPM'ler) sözdizimi SemVer olarak adlandırılır ve 'Semantik Sürüm Oluşturma' için kısadır. Semver'in detaylı sözdizimi ile ilgili belgeleri, Düğüm / npm içinde semver ayrıştırıcısının API'sındaki Bower ve NPM'de kullanıldığı gibi bulabilirsiniz . Sen (yok olan altta yatan spec hakkında daha fazla bilgi edinebilirsiniz değil söz ~
veya diğer sözdizimi ayrıntıları) semver.org .
Bir var süper kullanışlı görsel semver hesap grok ve test etmek çok daha kolay tüm bu yapım ile oynayabilirsiniz.
SemVer sadece bir sözdizimi değildir! Sözdiziminin ne anlama geldiğini anlamaya yardımcı olacak API'ları yayınlamanın doğru yolları hakkında söylenecek bazı ilginç şeyler var. En önemlisi:
Herkese açık API'nızı belirledikten sonra, sürüm numaranızdaki belirli artışlarla değişiklikler üzerinde iletişim kurarsınız. XYZ (Major.Minor.Patch) sürüm biçimini düşünün . API sürümünü etkilemeyen hata düzeltmeleri, yama sürümünü geriye doğru uyumlu API eklemeleri / değişiklikleri küçük sürümü artırır ve geriye doğru uyumsuz API değişiklikleri ana sürümü artırır.
Yani, hakkındaki özel sorunuz ~
bu Major.Minor.Patch şeması ile ilgilidir. (İlgili düzeltme operatörü gibi ^
.) Kabul ~
etmek istediğiniz sürüm aralığını aşağıdakilerden birini daraltmak için kullanabilirsiniz :
- aynı küçük sürümde daha sonra yama düzeyinde değişiklikler ( "API'yı etkilemeyen hata düzeltmeleri" ) veya:
- aynı ana sürümde daha sonra küçük çaplı değişiklikler ( "geriye dönük uyumlu API eklemeleri / değişiklikleri" )
Örneğin: 1.2.x ağacında, 1.2.0'dan başlayarak ancak 1.3.0'dan daha düşük bir sonraki yama düzeyinde değişiklik yapacağınızı belirtmek için şunları kullanabilirsiniz:
"angular": "~1.2"
or:
"angular": "~1.2.0"
Bu size .x
sözdizimini kullanmakla aynı sonuçları verir :
"angular": "1.2.x"
Ancak, tilde / ~
sözdizimini daha da belirgin olmak için kullanabilirsiniz: 1.2.4 ile başlayan ancak yine de 1.3.0'dan daha düşük yama düzeyinde değişiklikleri kabul etmek istiyorsanız, şunu kullanırsınız:
"angular": "~1.2.4"
Sola, ana sürüme doğru hareket ederseniz ...
"angular": "~1"
... aynı ...
"angular": "1.x"
or:
"angular": "^1.0.0"
... ve 1.0.0'ın üzerindeki ve 2.0'dan küçük olan küçük veya yama düzeyindeki değişikliklerle eşleşir:
Yukarıdaki son varyasyona dikkat edin: buna 'düzeltme aralığı' denir . Düzeltme işareti, berbat bir şey gibi görünüyor >
, bu yüzden "1.0.0'dan büyük herhangi bir sürüm" anlamına geldiğini düşündüğünüz için mazur görüleceksiniz . (Kesinlikle bunu kaçırdım.) Hayır!
Caret aralıkları temel olarak yalnızca en soldaki önemli rakamı (genellikle ana sürümü) önemsediğinizi ve en soldaki basamağı etkilemeyen küçük veya yama düzeyinde değişikliklere izin vereceğinizi söylemek için kullanılır. Ancak, ana sürümü belirten yaklaşık işaret aralığının aksine, düzeltme aralığı aralıkları kesin bir küçük / yama başlangıç noktası belirlemenizi sağlar. Öyleyse, ^1.0.0 === ~1
gibi bir düzeltme aralığı aralığı ^1.2.3
herhangi bir değişiklik yapacağınızı söylemenizi sağlar >=1.2.3 && <2.0.0
. Bunu bir tilde aralıkla yapamazsınız.
Ona yakından baktığınızda her şey kafa karıştırıcı görünüyor. Ama bir saniye uzaklaştırın ve bu şekilde düşünün: şapka sadece en önemli basamaktan en çok endişe duyduğunuzu söylemenizi sağlar. Tilde, hangi rakamın en doğru olduğu konusunda en çok endişelendiğinizi söylemenizi sağlar. Gerisi detay.
İnsanların neden daha basit .x
sözdiziminden çok daha fazla kullandıklarını açıklayan tilde ve caret'in etkileyici gücü : sadece daha fazlasını yapmanıza izin veriyorlar. Bu nedenle, tilde .x
hizmetinin bile nerede kullanıldığını göreceksiniz . Kendi package.json dosyası içinde bağımlılıkları sürü içerir: Bir örnek olarak, UÖM'nin bkz ~2.4.0
biçimi yerine, 2.4.x
o biçimi olabilir kullanın. Buna bağlı olarak ~
, sözdizimi, hangi başlangıç düzeltme eki numarasının kabul edilebilir olduğuna bakılmaksızın 70+ sürüm bağımlılık listesinin sonuna kadar tutarlıdır.
Her neyse, SemVer için daha fazlası var, ama hepsini burada detaylandırmaya çalışmam. Bunu göz atın düğüm semver paketin Benioku'da . Ve kullandığınızdan emin olun semantik sürüm hesap makinesi size pratik ve SemVer nasıl çalıştığını kafanı çalışırlarken.
RE: Ardışık Olmayan Sürüm Numaraları: OP'nin son sorusu, ardışık olmayan sürüm numaralarını / aralıklarını belirtmektir (eğer oldukça düzenlediysem). Evet, ortak çift boru "ya da" operatörünü kullanarak yapabilirsiniz: ||
. Şöyle ki:
"angular": "1.2 <= 1.2.9 || >2.0.0"