Npm'yi package-lock.json oluşturmaya zorlamanın bir yolu var mı?


132

Yanlışlıkla sildim ve o package.jsonzamandan beri üzerinde birçok değişiklik yaptım . Bir npm installveya artık npm updateüretmeyin package-lock.json. Npm önbelleğimi ve nvm önbelleğimi temizlemeyi denedim, ancak hiçbir şey çalışmıyor gibi görünüyor. Node.js'nin birkaç sürümünde denedim (6.10.3 Node.js - 3.10.10 npm, üzerinde çalışmasını istediğim şeydir) ve hiçbirinde çalışmıyor.

Npm'yi package-lock.jsondosyayı oluşturmaya zorlamanın bir yolu var mı ?


2
Bence package-lock.json npm 5'e özgü
Brett Merrifield

3
package-lock.jsonv5'ten başlayarak varsayılan olarak npm'de otomatik olarak üretiliyor, önceki sürümlerde kilit dosya adı idi npm-shrinkwrap.jsonve npm shrinkwrapkomut kullanılarak manuel olarak oluşturuldu .
alexmac

@BrettMerrifield Teşekkürler! Benim sorunum buydu. Ben güncellendi node 8.6.0ve onunla npm 5.3.0ve işe yaradı.
Big Money

Kontrol edin .gitignore. Yanlışlıkla oldu package-lock.jsoniçinde .gitignorenasılsa çünkü package-lock.jsongösterilmesini değildi git statuso beni atma edildi.
Joshua Pinter

Yanıtlar:


156

Varsayılan olarak, package-lock.jsonher çalıştırdığınızda güncellenir npm install. Ancak bu ayarlayarak küresel devre dışı bırakılabilir package-lock=falseiçinde ~/.npmrc.

Global package-lock=falseayar etkin olduğunda, bir projenin package-lock.jsondosyasını şu komutu çalıştırarak güncellenmeye hala zorlayabilirsiniz :

npm install --package-lock

Bu komut, bir package-lock.jsongüncellemeyi zorlamanın tek kesin yoludur .


@RonNewcomb Daha fazla bilgi paylaşabilir misiniz? "Çalışmıyor" derken neyi kastediyorsunuz? Hangi npm sürümünü kullanıyorsunuz?
Mathias Bynens

npm sürüm 3.10.10 Düğüm 6.10.3 Listelediğiniz komut işlemsiz gibi görünüyor? Hiçbir şey olmuyor. Hata yok, dosya değişikliği yok, hiçbir şey yok.
Ron Newcomb

2
Projeniz için npm v3 kullanıyorsanız, bir package-lock.json. package-lock.jsonyalnızca npm v5 + tarafından desteklenir.
Mathias Bynens

8
npm v 6.4.1 ve bu, package-lock.json oluşturmaz
mjuopperi

1
6.4.1'de benim için çalışıyor. Bunu yanlış olarak ayarlamak, bir tane oluşturmasını da engeller.
Kevin B

94

Npm 6.x'te kullanabilirsiniz

npm i --package-lock-only

Https://docs.npmjs.com/cli/install.html'ye göre

--Package-lock-only argümanı, node_modules'i kontrol etmek ve bağımlılıkları indirmek yerine yalnızca package-lock.json'u güncelleyecektir.


12
Bu şimdi doğru cevap, diğerleri eski ve işe yaramayacak.
Vaibhav Singh

DevDependencies olmadan bir package-lock.json dosyasını nasıl oluşturacağınıza dair bir ipucu var mı? Temiz üretim kurulumları için buna ihtiyacım var. npm i --package-lock-only --only=productionişe yaramıyor gibi görünüyor.
Robert

package-lock.jsonSadece üretim bağımlılıkları için üretmenin mümkün olduğunu sanmıyorum . Ancak çalıştırırsanız npm i --only=production, yalnızca üretim bağımlılıklarını yüklemeniz gerekir. Dolayısıyla, derleme süreciniz şöyle görünebilir: tüm bağımlılıkları yükleyin, uygulama oluşturun, node_modulesyalnızca üretim bağımlılıklarını kaldırın ve yükleyin.
Janusz Przybylski

14

Bu yorumlarda cevaplanmıştır; v5 ve sonraki sürümlerde package-lock.jsonbir özelliktir npm. npm shrinkwraptüm sürümlerinde bir kilit dosyasını nasıl oluşturduğunuzdur npm.


1
bununla birlikte, package-lock.jsonshrinkwrap dosyalarıyla aynı şey olmadığını unutmayın .
18:59

7
npm 5+ olarak, aslında, her ayrıntısına kadar tamamen aynıdırlar, tek bir şey hariç: npm-shrinkwrap.jsonkayıt defterinde yayınlanacaklar ve package-lock.jsonolmayacaklar.
LJHarb

6
Evet. Yine de bu oldukça önemli bir fark, bu yüzden yorumumu bıraktım.
strugee

1
npm shrinkwrapüretir npm-shrinkwrap.json, ancak nasıl üretiyorsunuz package-lock.json?
Vic

5
5+ npm'de otomatiktir veya--package-lock
LJHarb

1

Birkaç yanıtın açıkladığı gibi koşmanız gerekir:

npm i

AMA o yoksa değil çözmek ...

npmYürütülebilir dosyanın sürümünü kontrol edin . (Benim için package-lock.json(hiç) kullanmayan 3.xx idi )

npm -v

En az 5.xx olmalıdır (bu , package-lock.json dosyasını tanıttı .)

Lunix'te npm'yi güncellemek için bu talimatları izleyin .

Daha fazla ayrıntı için lütfen bu orta hikayeyi okuyun .


0

Senin Eğer npm versiyonudur alt daha sürüm 5 , sonra otomatik nesil almak için daha yüksek sürümünü yüklemek paket lock.json .

Örnek: Mevcut npm'nizi 6.14.0 sürümüne yükseltin

npm i -g npm@6.14.0

En son npm sürüm listesini şu şekilde görüntüleyebilirsiniz:

npm view npm versions

-3

package-lock.json her çalıştırdığınızda yeniden oluşturulur npm i.


13
Bu yalnızca belirli nodeve sürümleri için geçerlidir npm. Sanırım npm> = 5.0ve node> = 7.0, ama bundan% 100 emin değilim. Benim için çalışmıyor node 6.11.3.
Thor84no

2
Paket kilidi npm yapılandırmasında false olarak ayarlanmışsa da doğru değildir. Kontrol etmek için 'npm yapılandırma listesini' kullanın
Damo

package-lock.json, npm'nin node_modules ağacını veya package.json'u değiştirdiği tüm işlemler için otomatik olarak oluşturulur. Docs.npmjs.com/files/package-lock.json adresine uygun olarak . Ancak npm versiyonu belirtilmemiştir.
NanoNova
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.