Hem package-lock.json hem de package.json'a ihtiyacım var mı?


149

NPM'mi en son sürüme (3.X'ten 5.2.0'a) güncelledikten ve npm installmevcut bir projede çalıştıktan sonra otomatik olarak oluşturulmuş bir package-lock.jsondosya alıyorum .

Anlarım package-lock.jsonaksine bana kesin bir bağımlılık ağacı verir package.json.

Sadece bu bilgilerden package.json, artık gereksiz gibi görünüyor ve artık gerekli değil.

Her ikisi de NPM'nin çalışması için gerekli mi?
Yalnızca package-lock.jsondosyayı kullanmak güvenli veya mümkün mü?

Package-lock.json ( doc1 , doc2 ) üzerindeki dokümanlar bundan hiç bahsetmiyor.

Düzenle :

Biraz daha düşündükten sonra, birisi projenizi NPM'nin eski bir sürümüyle (5.x'ten önce) kullanmak istiyorsa, yine de tüm bağımlılıkları yükleyeceği, ancak daha az doğru sürümlerle (yama sürümleri) sonucuna vardım.


Yanıtlar:


103

İhtiyacınız mı hem package-lock.jsonve package.json? Hayır .

İhtiyacınız var package.jsonmı? Evet .

Sadece ile bir projeniz olabilir mi package-lock.json? Hayır .

package.jsonBağımlılıkları daha kullanılır - proje özelliklerini, açıklaması, yazar ve lisans bilgi, komut dosyaları, tanımlama gibi package-lock.jsonyalnızca belirli bir versiyon numarasına kilit bağımlılıklar için kullanılır.


19

package-lock.json: her kurulu paketin tam sürümünü kaydederek bunları yeniden kurmanızı sağlar. Gelecekteki yüklemeler, aynı bağımlılık ağacı oluşturabilir.

package.json: uygulamanızın gerektirdiği minimum sürümü kaydeder. Belirli bir paketin sürümlerini güncellerseniz, değişiklik buraya yansıtılmayacaktır.


1
Yukarıdaki doğruysa ve package.jsonuygulama ve package-lock.json tarafından gereken minimum sürümü kaydederse, yüklü her paketin tam sürümünü kaydeder, o zaman modülün 0.112.1 sürümüne pakette ayarlandığı garip bir durum yaşıyorum .json ve 0.110.0 paket-lock.json ...
Jean-François Beauchamp

6

Sorunuz kilit dosyasının kaynak denetiminize bağlı olup olmayacağı ise - olmalıdır. Belirli koşullar altında göz ardı edilecektir.

Çekme isteklerini ve taahhüt geçmişini şişirdiğini buldum, bu yüzden değiştiğini görürseniz, bunun için ayrı bir taahhüt yapın.


1
Hayır, kaynak kontrolü taahhütlerini sormuyordum. NPM'nin her ikisinin de aynı anda çalışması için ihtiyacı varsa . package-lock.jsondaha ayrıntılı bir sürümü gibi görünüyor package.json, bu yüzden sadece kilit dosyasını kullanmak güvenli veya mümkün.
Omri Luzon

Projelerimde package.json'dan ayrıldım, özellikle npm betikleri için bir yerim var.
Stanley Kirdey

1
Artık sürüm kontrolü altına alınıp alınmayacağına dair ayrı bir soru var package-lock.json.
Adrian W

0

Package-lock.json dosyasını saklamanın nedeninin daha doğru ve ayrıntılı bir açıklaması burada bulunabilir

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.