npm install vs update - fark nedir?


519

Arasındaki pratik fark nedir npm installve npm update? Hangisini ne zaman kullanmalıyım?

Yanıtlar:


654

Arasındaki fark NPM yüklemek ve npm güncelleme belirtilen paket versiyonlarının kullanım package.json :

{
  "name":          "my-project",
  "version":       "1.0",                             // install   update
  "dependencies":  {                                  // ------------------
    "already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
    "already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
    "already-installed-versioned-module":    "3.4.1"  // ignores   ignores
    "not-yet-installed-versionless-module":  "*",     // installs  installs
    "not-yet-installed-semver-module":       "^4.2.1" // installs  installs
    "not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
  }
}

Özet : Tek büyük fark, bulanık versiyonlamaya sahip zaten kurulmuş bir modülün ...

  • tarafından yok sayılır npm install
  • tarafından güncellendi npm update

Ayrıca : installve updatevarsayılan olarak devDependencies

  • npm installolacak / güncelleme yüklemek sürece devDependencies --productionbayrak eklenir
  • npm updateolacaktır görmezden sürece devDependencies --devbayrak eklenir

Neden kullanılmalı npm install?

Çünkü npm installbağımlılıklarınızı ele almanın yanı sıra daha fazla şey yapar package.json. Eğer görebileceğiniz gibi npm yüklemek yapabilirsiniz ...

  • düğüm modüllerini manuel olarak yükleme
  • onları küresel olarak ayarlayın (bu onları kabuğun içine koyar PATH)npm install -g <name>
  • git etiketleri tarafından açıklanan belirli sürümleri yükleyin
  • git url'sinden yükle
  • ile yeniden yüklemeyi zorla --force

20
ve ne olacak ~1.3?
Offirmo

6
ya sürüm ^ 5.0.9 gibi ise? Ve npm install --save somePackage* bağımlılıkları kurtarmak için mümkün mü?
KwiZ

5
Ayrıca postinstall, kurulumda çalıştır gibi komutların da güncellemede olmadığını unutmayın .
Michael Marvick

2
Git URL'lerinde, git etiketlerinde vb. Farklı bir şekilde çalışırsa installve o zaman bu örnekleri örneğe eklemek harika olur. updatepackage.json
joeytwiddle

2
Bulanık sürüm araçlarında tildeli @Offirmo "güncelleme Bu paketin son minör (bugfix) açıklamasına" yani sürümünde son numarayı olmak minör sürümü, 1.3.0 -> 1.3.1bu benzer ^1.3.0yerlerde, ^yani güncellemeler ana sürüm 1.3.0 -> 1.4.0.
Boyan Kushlev

82

npm install , package.jsondosyada listelenen tüm modülleri ve bağımlılıklarını yükler .

npm updatenode_modules dizindeki tüm paketleri ve bağımlılıklarını günceller.

npm install express, yalnızca express modülünü ve bağımlılıklarını yükler.

npm update express güncellemeleri express modülü (npm@2.x ile başlayarak bağımlılıklarını güncelleştirmez).

Güncellemeler, modüle zaten sahip olduğunuzda ve yeni sürümü almak istediğinizde geçerlidir.


5
package.json dosyasında belirli bir sürümü belirtmezseniz, npm install bir modülün en son sürümünü alır. Yani bu bir tür güncelleme.
saeed

11
Peki ne kullanmalıyım, npm installya da npm update? Ya da başka bir deyişle, şimdi kullanıyorum npm installve güncellemeyi de yapıyor gibi görünüyor, neden kullanmalıyım npm update?
Borek Bernard

4
Peki updatepackage.json'dan bağımsız olarak her zaman en son sürüme güncellenirken, package.json'da installverilen sürüme saygı duyulur mu?
Borek Bernard

1
updatemodülün en son sürümünü yükler (veya günceller). installaksi belirtilmedikçe mevcut sürümü tutarsa, modülün son sürümünü yükler.
tenphi

11
@Borek npm update, paketinden bağımsız olarak paketinize göre en son sürüme güncellenir. "Express": "3.x" sürümünüz varsa ve 3.1.0 sürümündeyseniz, en son 3.x etiketine güncellenir. 4.x sürümü varsa, en son sürümünü yüklemez.
gcochard

47

Çoğu durumda, bu npm'de yayınlanan modülün en son sürümünü yükler.

npm install express --save

veya en son sürümü kullanmak için daha iyi modül:

npm install express@latest --save --force

--save: Paket bağımlılıklarınızda görünecektir.

Daha fazla bilgi: npm-install


11
npm install express@latest --save --forcetam olarak istediğim şeydi.
ThomasReggi

2
Çoğu durumda? Başka vaka var mı?
Dmitri Zaitsev

9

Birçok ayrımdan bahsedilmişti. İşte bir tane daha:

Koşu npm installkaynak dizinin başında çeşitli komut dosyalarını çalışacak: prepublish, preinstall, install, postinstall. Bu komut dosyalarının ne yaptığına bağlı olarak, a npm installbağımlılıkları yüklemekten çok daha fazla iş yapabilir.

Ben sadece prepublisharayacak bir kullanım vakası vardı makeve güncellenmiş Makefilevarsa bağımlılıkları getirmek için tasarlanmıştır package.json. Çağrı npm installiçinden Makefilegörüşmesi özelliğini ederken, sonsuz özyineleme yol açmış olurdu npm updateeğer yapı bile devam böylece tüm bağımlılıkları kurmadan, sadece iyi çalıştı makedoğrudan çağrıldı.


1
Bir çıkarım Eğer mesela, senin için, güncellenmiş halinde olmasıdır redismodülün ve other_moduleeski bir sürümünü gerektirir redis, npm install other_modulegaranti edecektir other_moduleeski bir sürümünü kullanacak. other_module/node_modules/redisGerekirse ekleyebilir .
jlukanta

4

npm update: paketinde bulunan en son düğüm modülleriyle yükleme ve güncelleme. json

npm install: package.json içinde tanımlanan düğüm modüllerini yükleyin (güncelleme olmadan)


Npm sürüm 6.9.0 kullanarak Aşağıdaki davranışı gözlemlemek: npm updateiçinde çok sayıda bağımlılıkları atlar package-lock.json. Gerekli tüm paketleri mevcuttur sahip olmak ve package-lock.jsondoğru olduğu, hep yürütmek zorunda npm installhemen sonra npm update.
Manfred
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.