Basit sorum şu: Neden package.json'umdaki tam sürümleri kullanamıyorum? Bu nasıl bir kilit dosyadan farklı?İplik/npm5 lockfiles ve tam paket versiyonları arasındaki fark nedir?
cevap
Ana fark, kilit dosyalarının iç içe bağımlılıkları da kilitlediğidir - bağımlılıklarınızın tüm bağımlılıkları vb. Tüm bu değişiklikleri yönetmek ve izlemek inanılmaz derecede zor olabilir ve kullanılan paketlerin sayısı katlanarak büyüyebilir. sırasıyla ~1.0.0
ve ~2.0.0
de foo
belirtmek 2 kütüphaneleri düşünün -
da el bir paketin belirli bir versiyonu kullanılması gerektiğini belirtmek olamaz durumlar vardır. Büyük sürümdeki fark, foo @ v1 API'sının foo @ v2 API'sı ile eşleşmeyeceğini, dolayısıyla uygulama düzeyinizdeki paket sürümünü çakışmalara ve hatalara neden olmadan geçersiz kılmanın bir yolu olmadığını söyler.
Son olarak, "neden bu kadar yarıçap var?" Diye merak ediyor olabilirsiniz. Neden tüm paketler bağımlılıklarının tam sürümünü manuel olarak belirlemelidir? " Semverin ana avantajlarından biri, bir alt bağımlılık güncellendiğinde ağaçtaki her bağımlılığı güncellemeniz gerekmediği anlamına gelir. foo
ve foo
güveniyorsa ve bar
ve bar
yalnızca yamalı bir kritik hataya sahip olsaydı ve her şey için tam sürümleri kullanıyoruz, daha sonra düzeltmeyi yapabilmemiz için önce foo
güncelleştirilmelidir. Eğer foo ve bar farklı bakıcılara sahipse veya foo terkedildiyse, bu biraz zaman alabilir ve projeyi (Java-arazisinde bir kereden fazla yaptığım bir şey) çatallamam gerekebilir. Bu, kütüphanelerin ekosistemlerini korumak için çok yararlıdır, çünkü bağımlılık ağacında düğüm başına gerekli olan bakım işini temelde azaltarak kütüphaneleri ve desenleri çıkarmayı kolaylaştırır. Bir zamanlar, tam sürümleri kullanan bir bileşen kitaplığı oluşturduğumuz ve paylaşılan işlevselliği içeren çekirdek kitaplığın güncelleştirildiği erken bir projem vardı; bu sürümü güncellemek için diğer paketlerin her'a bir PR göndermesi gerekiyordu ve bazen numaralı'a bağlı bileşenlere PR'leri takip eder. Söylemeye gerek yok, birkaç ay sonra paketleri birleştirdik.
Bu yardımcı olur umarım!
- 1. Oozie iş akışı, koordinatör ve paket arasındaki fark nedir?
- 2. Derleyici ve yorumlayıcı arasındaki tam fark?
- 3. wpf dosyasında ToolBarPanel ve ToolBarTray arasındaki tam fark nedir?
- 4. Python'da {} ve [] arasındaki fark nedir?
- 5. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 6. $ arasındaki fark nedir? ve PowerShell
- 7. Meteor ve Meteorite (mrt) arasındaki fark nedir?
- 8. PEAR ve Besteci arasındaki fark nedir?
- 9. Firebase - Ref ve çocuk arasındaki fark nedir?
- 10. Fark() arasındaki fark nedir mustache.js
- 11. Bir kullanıcı ve rol arasındaki fark nedir?
- 12. Ruby'deki özellikler ve base_attributes arasındaki fark nedir?
- 13. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 14. Android'de ArrayAdapter ve ListAdapter arasındaki fark nedir?
- 15. -rpath ve -L arasındaki fark nedir?
- 16. RSpec'te stub_model ve mock_model arasındaki fark nedir?
- 17. arasındaki fark nedir?
- 18. scipy.ndimage.filters.convolve ve scipy.signal.convolve arasındaki fark nedir?
- 19. Subtotal ve BaseSubtotal arasındaki fark nedir?
- 20. @include ve userscripts'taki tutar arasındaki fark nedir?
- 21. Java arasındaki fark nedir
- 22. arasındaki fark nedir?
- 23. arasındaki fark nedir?
- 24. Arşivleme ve sıkıştırma arasındaki fark
- 25. .exp kullanımı nedir ve .lib ile .dll arasındaki fark nedir?
- 26. Paketle gem yüklemesi arasındaki fark nedir?
- 27. app.doScript ve $ .evalFile arasındaki fark nedir?
- 28. gVim ve gVim arasındaki fark nedir?
- 29. isAlpha ve isLetter arasındaki fark nedir?
- 30. .got ve .got.plt bölümü arasındaki fark nedir?
Harika bir açıklama, teşekkürler! – user2061057
İkinci paragrafınızı takip ettiğimden emin değilim. NPM'de, her modül 'bağımlılık ağacına sahip değil midir?' Başka bir deyişle, NPM Tamam, geçişli bir bağımlılığın 2 çelişen versiyonuyla değil, çünkü onları ayrı tutar mı? – jrahhali
Evet, ancak 2 paket aynı bağımlılığı paylaşıyorsa, npm bu depomuzu node_modules öğesinin üst düzeyinde yalnızca bir kez yükleyebilir. https://docs.npmjs.com/how-npm-works/npm3-nondet Bu doc, npm3 içindir ancak yine de geçerlidir. – user2301179