web-gelistirme-sc.com

Package.json içindeki her bağımlılığı en son sürüme nasıl güncellerim?

Package.json'ı başka bir projeden kopyaladım ve şimdi tüm bağımlılıklarını en son sürümleriyle çarpmak istiyorum çünkü bu yeni bir proje ve kırılırsa bir şeyi düzeltmeyi umursamıyorum.

Bunu yapmanın en kolay yolu nedir?

Şu an bildiğim en iyi yol, npm info express version komutunu çalıştırıp ardından package.json dosyasını her biri için manuel olarak güncellemektir. Daha iyi bir yol olmalı.

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

Şu anda npm-check-updates üzerinde bir işbirlikçiyim, bu da bu soruna mükemmel bir çözüm.

1629
Raine Revere

Görünüşe göre npm-check-updates , bunu yapmanın tek yolu.

npm i -g npm-check-updates
ncu -u
npm install

Öğleden sonra <3.11:

Her bağımlılığın sürümünü * olarak değiştirin, ardından npm update --save komutunu çalıştırın. (Not:npm ) 'nin son sürümlerinde (3.11) kırıldı.

Önce:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

Sonra:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

Tabii ki, bu güncelleme bağımlılıklarının keskin çekiçleridir. - Söylediğiniz gibi - projenin boş olması ve hiçbir şeyin kırılamaması sorun değil.

Öte yandan, daha olgun bir projede çalışıyorsanız, yükseltme işleminden önce bağımlılıklarınızda hiçbir değişiklik değişikliği olmadığını doğrulamak istersiniz.

Hangi modüllerin modası geçmiş olduğunu görmek için, sadece npm outdated komutunu çalıştırın. Yeni sürümleri olan kurulu bağımlılıkları listeler.

1969
josh3736

npm-check-updates, package.json dosyasını otomatik olarak bütün bağımlılıkların en son sürümü olan.

bakınız https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 
905
Etienne

TLDR; (daha yeni NPM sürümleri için güncellendi)

Bu cevaplar başlangıçta yazıldığı için işler biraz değişti.

npm 2+: npm outdated + npm update + npm shrinkwrap

Daha eski npm: npm-check-updates paketi + npm shrinkwrap

Deponuzu daralttığınızdan emin olun, yoksa ölü bir proje ile kapatabilirsiniz. Geçen gün bir proje çıkardım ve bitmedi çünkü depremlerim eski/güncellenmiş/karışık. Büzülürse, npm tam ihtiyacım olanı kurardı.


Ayrıntılar

Bu kadar uzağa kim merak ediyorsa önerim:

En son sürümleri önermek için npm-check-updates veya npm outdated kullanın.

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

Daha sonra temiz bir kurulum yapın (rm olmadan wd o bazı bağımlılık uyarıları var)

$ rm -rf node_modules
$ npm install 

Son olarak, tam sürümleri npm-shrinkwrap.json ile npm shrinkwrap dizinine kaydedin.

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Şimdi, npm install artık npm-shrinkwrap.json öğesinde tam sürümleri kullanacak

npm-shrinkwrap.json öğesini git içine işaretlerseniz, tüm kurulumlar aynı sürümleri kullanır. 

Bu, gelişimden (tüm güncellemeler, her zaman) üretime geçmenin (hiç kimse hiçbir şeye dokunmaz) yoludur.

331
Michael Cole

One bağımlılığını package.json öğesini manuel olarak açıp değiştirmek zorunda kalmadan en son sürümüne güncellemek için, çalıştırabilirsiniz.

npm install {package-name}@* {save flags?}

diğer bir deyişle.

npm install [email protected]* --save

Başvuru için, npm-install


Reddedilen bir düzenlemede Vespakoen kullanıcısının belirttiği gibi, aynı anda birden çok paketi güncellemek de mümkündür:

npm install --save [email protected]* [email protected]* [email protected]*

Ayrıca Shell için npm outdated 'a dayanan bir liner ekler. Kod ve açıklama için bkz. edit .


Not: Ayrıca böyle şeyler için package.json 'yı manuel olarak düzenlemek zorunda kalmaktan nefret ediyorum;)

171
laconbass

IDE'nizde Visual Studio Code kullanıyorsanız, bu, package.json güncellemesini bir tıklatma işlemi yapmak için eğlenceli, küçük bir eklentidir.

Version Lense

 enter image description here

70
GollyJer

Bu npm 1.3.15'ten itibaren çalışır.

"dependencies": {
  "foo": "latest"
}
55
Tobiasz Cudnik
  1. Kararsız dahil, en son sürümler için sürüm olarak * kullanın.
  2. En son kararlı sürüm için latest öğesini sürüm tanımı olarak kullanın.
  3. Package.json'ı, LatestStablePackages kullanarak en son kararlı sürüm numarasıyla değiştirin.

İşte bir örnek:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},
44
Mr. Sun Lin

Yukarıda en iyi cevabı bulduğum tek uyarı, modülleri en son sürüme güncellemesi. Bu, dengesiz bir alfa yapısına güncelleme yapabileceği anlamına gelir.

Bu npm-check-updates yardımcı programını kullanırdım ...

Etienne'nin yukarıda belirtildiği gibi: kurun ve çalıştırın:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 
37
Tyler Davis

Hangi paketlerin daha yeni sürümleri olduğunu görmek için aşağıdaki komutu kullanın:

npm outdated

sadece bir bağımlılık güncellemek için sadece aşağıdaki komutu kullanın:

npm install [email protected] --save

Örneğin:

package.json dosyamın bağımlılığı var: 

"@progress/kendo-angular-dateinputs": "^1.3.1",

o zaman yazmalıyım:

npm install @progress/[email protected] --save
32
StepUp

Nasıl npm-upgrade 'nin çalışmasını gerçekten seviyorum. Tüm bağımlılıklarınızı gideren ve mevcut sürümü en son sürüme kıyasla görmenizi ve isterseniz güncellemenizi sağlayan basit bir komut satırı yardımcı programıdır. 

Projenizin kökündeki npm-upgrade çalıştırdıktan sonra ne olacağını gösteren bir ekran görüntüsü (package.json dosyasının yanında):

 npm upgrade example

Her bağımlılık için, yükseltmeyi, görmezden gelmeyi, değişmezliği görmeyi veya işlemi bitirmeyi seçebilirsiniz. Şimdiye kadar benim için harika çalıştı.

DÜZENLEME: Açıkçası, bu komut çalışmadan önce yüklenmesi gereken bir üçüncü taraf paketidir. Npm ile gelmiyor:

npm install -g npm-upgrade

Ardından bir package.json dosyası olan bir projenin kökünden:

npm-upgrade
31
manncito

Anlamsal sürüm numaralarını eşleştirmek için temel bir regex. Böylece hepsini bir yıldız işareti ile hızlı bir şekilde değiştirebilirsiniz.

Anlamsal Sürüm Düzenli İfade

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

Nasıl kullanılır

JSON dosyasında değiştirmek istediğiniz paket sürümlerini seçin.

 screenshot:select the text you want to replace

Yukarıdaki regex'i girin ve doğru metinle eşleştiğini doğrulayın.

 screenshot:input the semver regex above

Tüm eşleşmeleri yıldızla değiştirin.

 screenshot:replace package versions with an asterisk

npm update --save komutunu çalıştır

21
daniellmb

Bu özellik npm v5 'da tanıtılmıştır. npm install -g [email protected] kullanarak npm'ye güncelleyin ve 

package.json dosyasını güncellemek için 

  1. /node_modules ve package-lock.json (if you have any) öğelerini silin 

  2. npm update komutunu çalıştırın. bu, semver 'e dayalı bağımlılık paketini indirir. 

en son sürüme güncellemek için. npm-check-updates ile gidebilirsiniz

14
Sibiraj

Geçenlerde npm ve package.json kullanan gruntfile.js sihirleri için birkaç projeyi güncellemem gerekti. Aşağıdaki bash komutu (multiline komutu) benim için iyi çalıştı:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

Buradaki fikir: npm outdated çıktısını json olarak bağlamak, jq
(jq bir json komut satırı çözümleyici/sorgu aracıdır)
(--depth için npm outdated argümanının kullanıldığına dikkat edin)
jq çıktıyı sadece en üst seviye paket adına indirecek.
finally xargs her LIBRARYNAME adlı kullanıcıyı bir defada npm install LIBRARYNAME --save-dev komutuyla yerleştirir

Yukarıdakiler benim için çalışan bir makinede işe yarayan şeydi: Node = v0.11.10 osx = 10.9.2 npm = 1.3.24

bu gerekli:
xargs http://en.wikipedia.org/wiki/Xargs (makineme özgü olduğuna inanıyorum)
ve
jq http://stedolan.github.io/jq/ ((brew install jq ile kurdum))

Not: Güncellenmiş kütüphaneleri sadece json key devDependancies içindeki package.json içine --save-dev kullanarak kaydederim, bu benim projem için bir zorunluluktu, sizinki değil.

Daha sonra her şeyin basit bir sosla olduğunu kontrol ediyorum.

npm outdated --depth=0

Ayrıca mevcut en üst seviye kurulu kütüphane sürümlerini kontrol edebilirsiniz.

npm list --depth=0
13
andxyz

Güzel bir (terminal için) etkileşimli raporlama arayüzü ile yumuşak bir yaklaşım kullanmak istiyorsanız, npm-check komutunu kullanmanızı öneririm. 

Çekiç azdır ve bağımlılık güncellemeleriniz hakkında daha fazla bilgi sahibi olmanızı ve kontrol etmenizi sağlar.

Size nelerin beklediğini görmek için bir ekran görüntüsü (npm-check için git sayfasından alıntı):

 enter image description here

12
TWright

Updtr!

Modası geçmiş npm'ye göre, updtr en son sürümü yükler ve her bağımlılık için npm testini çalıştırır. Test başarılı olursa, updtr yeni sürüm numarasını package.json dosyasına kaydeder. Ancak test başarısız olursa, updtr değişiklikleri geri alır.

https://github.com/peerigon/updtr

10
David Braun

Bunu arşivlemek için npm-check kullanıyorum.

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

 enter image description here

Tam sürüm numaralarını package.json.__ biçiminde tutacak başka bir yararlı komut listesi

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -ua #update locals
npm i
8
goksel

package.json için NPM 3.10.10 öğesini güncellemek için kullanmam gereken komutlar:

npm install -g npm-check-updates
ncu -a
npm install

Arka fon:

@ Josh3736'dan en son komutu kullanıyordum, ancak package.json'um güncellenmedi. Daha sonra npm-check-updates -u çalıştırırken açıklama metnini fark ettim:

Aşağıdaki bağımlılık, belirtilen sürüm aralığı, ancak yüklü sürüm geride. Son yükleyebilirsiniz. Paket dosyanızı npm güncelleme kullanarak değiştirmeden sürüm. Eğer Yine de paket dosyanızdaki bağımlılığı güncellemek istiyorsanız, ncu .__ 'u çalıştırın. -a.

Npm-check-update belgelerini okurken farkı görebilirsiniz:

https://www.npmjs.com/package/npm-check-updates

-u, --upgrade: paket dosyasının üzerine yaz

-a, --upgradeAll: en son sürümleri ilan edilen semver bağımlılığını sağlayan bu bağımlılıkları bile içerir

ncu, npm-check-updates yazarken mesajda görüldüğü gibi npm-check-updates -u için bir takma addır:

[INFO]: You can also use ncu as an alias
8
Ogglas

nPM-güncellemelerini kontrol

https://www.npmjs.com/package/npm-check-updates

npm-check-updates, mevcut sürüm sınırlamalarına bakılmaksızın package.json bağımlılıklarınızı en son sürümlere yükseltmenizi sağlar.

$ npm install -g npm-check-updates

$ ncu -u

bağımlılıklar güncellendi!

8
аlex dykyі

Ncu, güncellemeleri kontrol etmek için yeni bir takma addır. Bunu yaparak, paketin ur sürüm numaralarını manuel olarak güncellemeniz gerekmez. Json ncu bunu sizin için yapar. Bir Linux makinesindeyseniz aşağıdaki yöntemi izleyin 

Sudo npm i -g npm-check-updates
// decide between -u or -a
ncu -u, --upgrade and overwrite package file
ncu -a, --upgradeAll include even those dependencies whose latest 
          version satisfies the declared server dependency
Sudo npm install
7
karthik006

Bir kolay adım:

$ npm install -g npm-check-updates && ncu -a && npm i
6
Matt

yarn kullanıyorsanız, yarn upgrade-interactive /, modası geçmiş bağımlılıklarınızı görüntülemenizi ve daha sonra hangilerini güncellemek istediğinizi seçmenizi sağlayan gerçekten şık bir araçtır.

Yarn'ı npm yerine kullanmak için daha fazla sebep var. Heh.

5
Yangshun Tay

Yukarıdaki komutlar güvensizdir çünkü sürümleri değiştirirken modülünüzü kırabilirsiniz .. __ Bunun yerine aşağıdakileri tavsiye ederim

  • npm shrinkwrap komutunu kullanarak geçerli geçerli düğüm modülleri sürümünü package.json olarak ayarlayın.
  • Her bağımlılığı en son sürüme güncelleyin. https://github.com/bahmutov/next-update komut satırı aracını kullanarak TESTLERİNİZİ KESİNTİSİNİZ
 npm install -g next-update
// paketinizden. 
 next-update 
5
gleb bahmutov

Npm 5 ve node 8 kullanıyorsanız aşağıdaki komutu deneyin.

npm güncelleme - save

4
krunal shah

İplik kullanıyorsanız, aşağıdaki komut tüm paketleri en son sürümlerine günceller:

yarn upgrade --latest

Dokümanlarından :

upgrade --latest komutu, paketleri yükseltme komutuyla aynı şekilde paketler, ancak package.json içinde belirtilen sürüm aralığını yok sayar. Bunun yerine, en son etiketle belirtilen sürüm kullanılacak (paketleri büyük sürümler arasında potansiyel olarak yükseltme).

4
fotijr

Npm sürüm 5.2.0'dan itibaren, bunu genel npm kayıt defterinize veya yerel olarak uygulamanıza ek paketler yüklemeden tek bir satırda çalıştırmanın bir yolu vardır. Bu, npm ile birlikte verilen yeni npx yardımcı programından yararlanılarak yapılabilir. ( Daha fazlasını öğrenmek için buraya tıklayın. )

Projenizin kök dizininde aşağıdaki komutu çalıştırın:

npx npm-check-updates -u && npm i
4
ilyakam

Alternatif

"dependencies":{
    "foo" : ">=1.4.5"
}

npm güncellemesini her kullandığınızda, otomatik olarak en son sürüme güncellenir .Daha fazla sürüm sözdizimi için buradan kontrol edebilirsiniz: https://www.npmjs.org/doc/misc/semver.html

3
Haven

Aşağıdaki kod (kabul edildi) bana "çok uzun süren falan" gibi bir şey yazdı ve hiçbir şey yapmadı. Muhtemelen küresel bayrağın kullanılması problemdi, idk.

npm i -g npm-check-updates
ncu -u
npm install

Metin editörümü kullanmaya ve bunun yerine yarı manuel bir yaklaşım izlemeye karar verdim.

Bunun gibi bir listeyi (sadece çok daha uzun) package.json cihazımın dev bağımlılıklarından notepad ++ text editörüne kopyaladım:

"browserify": "10.2.6",
"expect.js": "^0.3.1",
"karma": "^0.13.22",
"karma-browserify": "^5.2.0",

Arama modunu normal ifadeye ayarladım, paket ismini almak için ^\s*"([^"]+)".*$ modelini kullandım ve npm uninstall \1 --save-dev \nnpm install \1 --save-dev ile değiştirdim. "Tümünü değiştir" üzerine tıklayın. Otput şuydu:

npm uninstall browserify --save-dev 
npm install browserify --save-dev
npm uninstall expect.js --save-dev 
npm install expect.js --save-dev
npm uninstall karma --save-dev 
npm install karma --save-dev
npm uninstall karma-browserify --save-dev 
npm install karma-browserify --save-dev

Bash'a geri kopyaladım ve enter'a bastım. Her şey yükseltildi ve iyi çalışıyor. Bu kadar.

"browserify": "^16.1.0",
"expect.js": "^0.3.1",
"karma": "^2.0.0",
"karma-browserify": "^5.2.0",

Çok fazla bir şey olduğunu sanmıyorum, çünkü bunu sadece şimdi ve sonra yapmak zorundasınız, ancak package.json 'u ayrıştırıp paketlerinizi güncelleyen bir betiği kolayca yazabilirsiniz. Bence bu daha iyi, çünkü özel bir şeye ihtiyacınız varsa listenizi düzenleyebilirsiniz, örneğin bir lib'in güncel sürümünü tutabilirsiniz.

2
inf3rno

Ek paketler olmadan çözüm

Her bağımlılığın sürümünü * olarak değiştirin:

"dependencies": {
    "react": "*",
    "react-google-maps": "*"
  }

Ardından npm update --save çalıştırın.

Paketlerinizden bazıları güncellendi, bazıları değil mi?

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "*"
  }

Bu zor kısım, yerel "tepki" sürümünüzün en yenisinden daha düşük olduğu anlamına geliyor. Bu durumda npm "tepki" paketini indirip güncelledi. Bununla birlikte, yerel olarak "react-google-maps" versiyonunuz en yenisi ile aynıdır.

Eğer hala değişmeden * "güncellemek" istiyorsanız, bu modülleri node_modules klasöründen silmelisiniz.

Örneğin. node_modules/react-google-maps dosyasını silin.

Sonunda tekrar çalıştırın npm update --save.

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "^4.10.1"
  }

Geliştirme bağımlılıklarını güncellemek istiyorsanız npm update --save-dev komutunu çalıştırmayı unutmayın.

  • npm modası geçmiş 
  • npm güncellemesi

Size uygulamanız için uyumlu en son aranan sürümleri getirmelisiniz. Ancak en son sürümleri değil.

2
webkitfanz

Bu, package.json içindeki tüm bağımlılıkları en son güncellemek için yaptığım şeydi:

npm install -g npm-check-updates
ncu -u --packageFile package.json 
2
Arpit

Global yüklemek istemiyorsanız npm-check-updates basitçe şunu çalıştırabilirsiniz:

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"
1
Yukulélé

Bunu https://github.com/tjunnone/npm-check-updates adresindeki talimatları görerek çözdüm. 

$ npm install -g npm-check-updates
$ ncu
$ ncu -u # to update all the dependencies to latest
$ ncu -u "specific module name"  #in case you want to update specific dependencies to latest
1
Sunil

Github kullanıyorsanız Greenkeeper. https://greenkeeper.io/

Bir Github entegrasyonu ve işleri ayarlamak inanılmaz derecede kolay. Kurulduğunda, otomatik olarak belirttiğiniz depolarda çekme istekleri oluşturur (veya istenirse tümü) ve manuel olarak bir şey yapmaya zorlamadan kodunuzu her zaman güncel tutar. PR'lar daha sonra bir CI hizmetinde bir yapıyı tetiklemelidir ve başarılı veya başarısız bir kontrole bağlı olarak, sorunu neyin tetiklediğini veya CI geçtiğinde basitçe PR ile birleştirin.

greenkeeper PR 1 greenkeeper PR 2

En altta, ilk derlemenin ilk önce başarısız olduğunu ve bir onaylamadan sonra ("v6.9 düğümüne yükseltme") testlerin başarılı olduğunu, böylece PR'yi birleştirebileceğimi görebilirsiniz. Çok fazla emoji ile birlikte geliyor.

Başka bir alternatif de https://dependencyci.com/ olacaktır, ancak yoğun bir şekilde test etmedim. İlk bakıştan sonra Greenkeeper IMO'da daha iyi görünüyor ve daha iyi bir entegrasyona sahip.

1
Luca Steeb

NPM'nin son sürümü için başka bir çözüm buldum. Yapmak istediğim, tüm "*" bağımlılıkları en son sürüm numaralarıyla değiştirmek. Tartışılan yöntemlerin hiçbiri benim için işe yaramadı.

Ben ne yaptım:

  1. "*" dizisini "^ 0.0.0" ile değiştir
  2. npm-check-updates -u komutunu çalıştır

Package.json içindeki her şey şimdi son sürüme güncellenmiştir.

1
miqrc

Bugün itibariyle bunu yapmanın en kolay yolu, npm yerine pnpm kullanmak ve basitçe şunu yazın:

pnpm update --latest

https://github.com/pnpm/pnpm/releases/tag/v3.2.0

0
Sumomo

NPM-script ile otomatik güncelleme mümkündür:

{
    "_cmd-update-modules": "npm run devops-update-modules",
    "scripts": {
        "create-global-node-modules-folder": "if not exist \"%appdata%\\npm\\node_modules\" mkdir %appdata%\\npm\\node_modules",
        "npm-i-g": "npm i [email protected] -g",
        "npm-check-i-g": "npm i [email protected] -g",
        "eslint-i-g": "npm i [email protected] -g",
        "npm-check-u-l": "npm-check \"C:\\Program Files\\nodejs\\node_modules\\npm\" -y -i lru-cache",
        "npm-check-u-g": "npm-check \"C:\\Program Files\\nodejs\\node_modules\\npm\" -y -g -i lru-cache",
        "npm-deep-update-l": "npm update --depth 9999 --dev",
        "npm-deep-update-g": "npm update --depth 9999 --dev -g",
        "npm-cache-clear": "npm cache clear --force",
        "devops-update-modules": "npm run create-global-node-modules-folder && npm run npm-i-g && npm run npm-check-i-g && npm run eslint-i-g && npm run npm-check-u-l && npm run npm-check-u-g && npm run npm-deep-update-l && npm run npm-deep-update-g && npm run npm-cache-clear"
    }
}

Daha fazla ayrıntı ve adım adım kılavuz için: https://stackoverflow.com/a/34295664/462347

0
Mike B.