NPM değişikliği node_modules ağaç veya herhangi bir eylem package.json için otomatik olarak bir package-lock.json oluşturulur. Sonraki kurulumların ara bağımlılık güncellemelerine bakmaksızın aynı ağacı üretebilmesi için oluşturulan tam ağacı tanımlar.
Bu dosya, kaynak kod deposuna gönderilmek üzere tasarlanmıştır ve çeşitli amaçlar için kullanılabilirdir:
Ekip arkadaşlarının, dağıtımların ve sürekli entegrasyonun tam olarak aynı bağımlılıkların kurulmasını garanti etmek için bağımlılık ağacının tek bir temsilini tanımlar.
Kullanıcılara, dizinin kendisini bağlamadan önceki node_modules durumuna "ilerleme" için bir araç sunun.
Okunabilir kaynak kontrol farklılıkları sayesinde ağaç değişikliklerinin daha fazla görünürlüğünü kolaylaştırmak.
Ve kurulum sürecini, NPM'nin daha önce kurulmuş paketlerin tekrarlayan meta veri çözümünü atlamasına izin vererek optimize edin.
package-lock.json ile ilgili önemli bir detay, piyasaya sürülemeyecek ve üst düzey paket dışında bir yerde bulunursa göz ardı edileceğidir. Formatı npm-shrinkwrap.json ile paylaşıyor, temelde aynı dosya ama yayın yapmaya izin veriyor. Bu, bir CLI aracı dağıtmadıkça veya sürüm sürecini kullanarak üretim paketi üretmediğiniz sürece önerilmez.
Eğer hem package-lock.json hem de npm-shrinkwrap.json bir paketin kök dizininde varsa, package-lock.json tamamen göz ardı edilir.
Orijinal bağlantı: https://docs.npmjs.com/files/package-lock.json
npm 5.x çıkışından bu yana, 5.6.0 kilidinin rolü birçok kez değişti ve artık internetteki birçok küçük beyaz metin önceki belge çevirisinde takılı kalmış.
npm3.x'ten npm5'e güncelledim ama 'npm i' çalıştırırken yaşanan fenomenin internetteki popüler bilim makalesiyle tutarlı olmadığını fark ettim.
Dosya package.json şekilde değiştirilirse değiştirilsin, npm i tekrar tekrar çalıştırılırsa, npm kilit dosyasında açıklanan sürüm bilgilerine göre indirilecektir.
Ayrıca, npm i tekrarlandığında, npm kilit bilgilerini görmezden gelerek paketin package.json'daki Semantik sürüm versiyon bilgilerine göre güncelleme modülünü indireceği de belirtilir (kilit işe yaramaz gibi görünüyor).
**Bilgilere göre, NPM 5.0 çıkışından bu yana NPM I kuralları üç kez değişti. **
1. NPM 5.0.x sürümü, package.json nasıl değişirse değişsin, npm I kilit dosyasına göre indirilecek
package-lock.json dosya değiştirildikten sonra güncellenmediği package.json dosya · Sayı #16866 · NPM/NPM https://github.com/npm/npm/issues/16866 Bu sorun bu sorundan şikayet ediyor, tabii ki package.json manuel değiştirdim, neden bana bir yükseltme paketi vermiyorsun! Ve sonra 5.1.0 sorunu ortaya çıkıyor...
2. 5.1.0 sürümünden sonra, npm kurulumu en son npm'yi indirmek için kilit dosyasını görmezden gelir
O zaman biri bu konuyu gündeme getirdi: Neden paket kilidi görmezden geliniyor? · Sayı #17979 · NPM/NPM https://github.com/npm/npm/issues/17979 Şikayet sonunda 5.4.2 sürümünden sonra kurallara dönüştü.
3. 5.4.2 sürümünden sonra paket kilidi neden görmezden geliniyor? · Sayı #17979 · NPM/NPM https://github.com/npm/npm/issues/17979
Kabaca olarak, package.json değiştirilirse ve package.json kilit dosyasından farklıysa, npm 'npm i' çalıştırırken paketin sürüm numarasına ve anlamsal anlamına göre en son paketi indirir ve kilitlemek için günceller.
Eğer ikisi de aynı durumdaysa, npm i çalıştırıldığında kilide göre indirilir, gerçek paket sürümü yeni olup olmamasına bakılmaksızın.
|