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.