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


2011

Package.json'u başka bir projeden kopyaladım ve şimdi tüm bağımlılıkları en son sürümlerine çarpıştırmak istiyorum, çünkü bu yeni bir proje ve eğer kırılırsa bir şeyi düzeltmeyi umursamıyorum.

Bunu yapmanın en kolay yolu nedir?

Şu anda bildiğim en iyi yol, npm info express versionpackage.json'u her biri için manuel olarak çalıştırmak ve 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"
  }
}

GÜNCELLEME 5/1/19 : Altı yıl sonra hala npm-check-update'i bu soruna kapsamlı bir çözüm olarak sürdürüyorum . Zevk almak!


2
Bu soruna başka bir yaklaşım görmek harika. Salita'nın çıktısını gerçekten çok seviyorum. Şu anda katkıda bulunduğum aracın github.com/tjunnone/npm-check-updates gibi bazı güzel özellikleri, sürüm semantiğinin (1.x veya> 2.1.0 gibi) korunması ve yalnızca name / regex / devDeps ile filtrelenmesidir.
Raine Revere

1
Burada daha iyi cevaplar olması gerekiyor. Açıkçası bağımlılık çözünürlüğü ile her şeyin en son sürümüne sahip olamazsınız. En son modül sürümlerini en üst düzeye çıkarmak sadece bir çeşit optimizasyon problemidir. Ancak NPM, hangi modüllerin diğerlerinden daha yeni olmasını istediğinizi bilmiyor. Böyle bir şey olsaydı çok iyi olurdu: npm update --latest xyz, burada xyz olabildiğince yeni olmasını istediğiniz modüllerdir ve diğer tüm modüller en son uyumlu sürümlerini takip edecektir.
Alexander Mills

2
npm, her biri için doğru olanı indirerek paylaşılan bağımlılıklar arasındaki sürüm çakışmalarını doğru bir şekilde işleyecektir. Bu nedenle, Dep A, Dep C v1.0.0'a ve Dep B, Dep C v2.0.0'a bağlıysa, her biri uygun şekilde kurulur ve kullanılır. Bu nedenle, istediğiniz paketlerin en sonunu kurmakta özgürsünüz.
Raine Revere

Yükseltmeyi zorlamak için bunu deneyin:npm outdated | sed '1d; s/ .*/@latest/' | xargs npm i --save
miorey

Her zaman bu cevabı kontrol ediyorum. Ancak, Google sonuçlarında kaydığını görüyorum. Umarım bu yorum onun alaka düzeyini geri itmek yardımcı olacaktır !!
Zach Smith

Yanıtlar:


2391

Görünüşe göre npm-check-updates bunun gerçekleşmesinin tek yolu.

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

Npm <3.11:

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

Ö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 kör çekiçidir. - Dediğiniz gibi, proje boşsa ve hiçbir şey kırılamazsa sorun değil.

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

Hangi modüllerin modası geçmiş olduğunu görmek için çalıştırın npm outdated. Daha yeni sürümleri olan yüklü bağımlılıkları listeler.


13
@thefourtheye: Uygulamanızı bozan değişiklikleri içeren yeni bir modül sürümünü otomatik olarak yükleyebileceğiniz için genellikle package.json içinde bırakmamalısınız * . --saveBurada kullandığımız için *, yerine her paketin mevcut sürümü yerleştirilir.
josh3736

50
Bunu çalıştıramadım. Bu yanıt gönderildiğinden beri npm ile ilgili bir şey değişti mi? Joker karakteri kullandığımda ve joker npm install --savekarakterimde bırakılıyor package.json.
davidtheclark

15
Ne yazık ki, kullanmak updateda benim için çalışmıyor. Hala joker karakterlerle kaldım. Bu konuda bildiğiniz herhangi bir belge veya bakabileceğim başka kaynaklar var mı?
davidtheclark

120
Biraz eski ama bu diğer insanlara yardımcı olabilir: github.com/tjunnone/npm-check-updates | Kullanım npm install -g npm-check-updatessonra, yüklemek için npm-check-updatesbağımlılıklar güncellemeler olup olmadığını kontrol etmek ve npm-check-updates -usenin package.json sürümlerini güncellemek için. Sonra sadece npm installve yeni sürümleri indirecektir.
RaphaelDDL

5
Sorununuz, dev paketleri npm update --saveyerine yazmak yerine güncellemeye çalışmanızdan kaynaklanıyor olabilir npm update --save-dev.
adriendenat

1035

npm-check-updates bir package.json dosyasını tüm bağımlılıkların en son sürümüyle otomatik olarak ayarlayan bir yardımcı programdır

bkz. https://www.npmjs.org/package/npm-check-updates

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

[EDIT] Modern bir sürümüne sahipseniz bunu yapmanın biraz daha az müdahaleci (küresel bir yüklemeyi önler) npm:

$ npx npm-check-updates -u
$ npm install 

135
Bu, doğal olarak npm komutunun kendisi tarafından kullanılabilir olmalıdır, aslında bağımlılıkları güncellemek için şimdiye kadarki en iyi çözüm.
Mohammad Arif

7
Yerel olarak npm'nin bir parçası olmalı, tamamen katılıyorum. Ancak, değil ve bu çözüm bir esinti gibi geliyor. Teşekkür ederim.
Stefan

2
Ben adamlar [NARD] çekirdek npm içine almak için bastırıyor varsayalım?
enorl76

3
@ Batman Daha önce yüklemediyseniz evet. Aksi takdirde npm güncellemesi kullanın. ncu sadece package.json dosyasını günceller. 'Node_modules' yüklemez veya güncellemez.
Muzaffer

1
yararsız paket, paketlerin sadece bir kısmını ncu -agüncellemek, package.json da güncellemek değil.
Alexander Kim,

385

En son NPM için güncellendi

npm 2+ (Düğüm 0.12+):


npm outdated
npm update
git commit package-lock.json

Kadim npm (2014 dolaylarında):

npm install -g npm-check-updates
npm-check-updates
npm shrinkwrap
git commit package-lock.json

Deponuzu daralttığınızdan emin olun, yoksa ölü bir projeyle bitirebilirsiniz. Geçen gün bir proje çıkardım ve çalışmaz, çünkü depslerim güncel değil / güncellendi / karışıklık. Büzüşmüş olsaydım, npm tam olarak ihtiyacım olanı kurardı.


ayrıntılar

Şimdiye kadar kimin merak ettiği için tavsiye ettiğim şudur:

En son sürümleri önermek için npm-check-updatesveya npm outdateddüğmesini 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

Sonra temiz bir kurulum yapın (rm olmadan bazı bağımlılık uyarıları aldım)

$ rm -rf node_modules
$ npm install 

Son olarak, kesin sürümlerini kaydetmek npm-shrinkwrap.jsonilenpm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Şimdi, npm installtam sürümlerinpm-shrinkwrap.json

Git'e giriş yaparsanız npm-shrinkwrap.json, tüm yüklemeler aynı sürümleri kullanır.

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

ps Yarn paket listenizi Facebook'a gönderiyor .


13
asıl doğru cevap bu. onlarca deps yüklü, bu def daha iyi bir yol
Angel S. Moreno

6
Deneyimden, tüm paketleri her zaman bir kerede güncelleme tavsiyesi tehlikeli olabilir.
alphadogg

1
Kesinlikle. Her npm-shrinkwrap.jsonkaynak oluşturduğunuzda ve kaynak oluşturduğunuzda ve taahhütte bulunursanız , her zaman 'bulunduğunuz yere geri dönebilirsiniz'. Başladığımda büzülme özelliğini göz ardı ettim.
Michael Cole

21
Bu mu değil soruya cevap. Soru, en son sürümün nasıl güncelleneceği . npm updateyalnızca semver sürümü güncellemeleri, en son sürüm değil.
gman

1
Bir alternatif varsa cevap verebilir misiniz yarn upgrade package@version?
Ben Sinclair

201

Bir bağımlılığı manuel olarak açıp package.jsondeğiştirmek zorunda kalmadan en son sürümüne güncellemek için,

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

yani

npm install express@* --save

Referans için npm-install


Kullanıcı tarafından belirtildiği gibi Vespakoen reddedilen düzenlemeyle ilgili, bu şekilde bir kerede birden fazla paket güncellemek da mümkündür:

npm install --save package-nave@* other-package@* whatever-thing@*

Ayrıca, kabuk için bir tek astar atar npm outdated. Kod ve açıklama için düzenlemeye bakın .


PS: Ayrıca package.jsonböyle şeyler için elle düzenlemek zorunda nefret ediyorum ;)


8
Bu çözüm harika. Yeni bir modül yüklemeden tek bir paketi en son sürüme açıkça güncellemenin hızlı ve kolay yolu. Ben npm-check-updates seviyorum, ama afaik tüm paketleri güncel tutmaya çalışıyor , bu her zaman ne istediğinizi değil.
Chev

bu benim için işe yaramıyornpm install react-native-image-picker@* --save
Harry Moreno

1
@Chev: ncu ile tek veya birkaç paketi kolayca hedefleyebilir ncu express mocha chai. Ayrıca, ile paketleri hariç tutabilirsiniz ncu -x mocha. Yukarıdakilerin tek bir paketi güncellemek için olsa da en basit çözüm olduğunu kabul ediyorum.
Raine Revere

2
Ben sadece daha yeni dokümanlar işe benzer bir şey kullandım ... "*" yerine "en son" kullanırnpm install {package-name}@latest {save flags}
Drew Thomas

1
Çok teşekkürler, bu çözüm harika ve tam olarak aradığım şey. Öngörülemeyen sorunlara yol açabilecek diğer tüm bağımlılıkları güncellemeye gerek kalmadan belirli bir paketi güncellemenizi sağlar!
Dany Wehbe

90

Visual Studio Code'u IDE'niz olarak kullanıyorsanız , bu, package.jsontek tıklatma işlemini güncelleştirmek için eğlenceli bir küçük uzantıdır .

Sürüm Lensi

resim açıklamasını buraya girin


2
Burada yüce metin 3 sürümü var: github.com/yavorsky/Bump , biraz yavaş olsa da.
Alexander Kim

4
Güzel çalıştı, kimsenin açık olmaması durumunda, bu sadece paketinizdeki sürümleri kontrol eder. Daha sonra npm'ye yeni sürümleri yüklemesini bildirmek için "npm update" komutunu çalıştırmanız gerekir.
MattG

2
Paket bağımlılığının en son sürümünü, paket girdisinin üzerine fare imleci ile yerleşik Visual Studio Code'da kısa bir açıklama ile görebileceğinizi unutmayın: Yerleşik Paket Sürümü İpucu
Gürol Canbek

1
Bir kod merceği bağlantısını tıklarken paketleri otomatik olarak yüklemediğini unutmayın! Sadece package.json sürüm metnini günceller.
RA.

59

Bu npm 1.3.15 itibariyle çalışır.

"dependencies": {
  "foo": "latest"
}

10
Bunu bildiğim iyi oldu. Tahminimce bu, potansiyel olarak geriye dönük uyumsuz sürümlere otomatik olarak güncelleneceği için herhangi bir üretim sitesinde genellikle kötü bir uygulama olacaktır. '~ 2' sözdizimi, sizi belirli bir ana sürüm numarasına kilitler ve bunu takip eden semver geriye dönük olarak uyumlu olur.
Raine Revere

1
Eşyaları her zaman derinlemesine dondurabilirsiniz. Bunun için bir emir var. -2 kulağa hoş geliyor.
Tobiasz Cudnik

5
Ben npm shrinkwrapdeps dondurmak için birlikte kullanmayı seviyorum.
daniellmb

Bunu yaparsak, o paketin gerçek sürümünü nasıl biliriz? Diyelim ki bir girişim vardı "react": "16.9.0"ve sonra en son ekledim ve koştum npm i, bundan sonra projemde hangi reaksiyon versiyonunun olduğunu nasıl bulabilirim? çünkü "react":"latest"benim paketimde ne kaldı. json, benden sonra bile bir sayı değilnpm i
programcı

52
  1. kullanım *Kararsız dahil en son sürümlerin sürümü olarak
  2. kullanım latestEn son kararlı sürüm için sürüm tanımı olarak
  3. Package.json dosyasını kullanarak tam kararlı sürüm numarası ile değiştirin. LatestStablePackages

İş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"
},

2
Bu en iyi cevap.
Peza

1
bu kabul edilmiş cevap
olmalıydı

hala en güvenli yaklaşım. İyi cevap.
klewis

43

Yukarıdaki en iyi yanıtı bulduğum tek uyarı, modülleri en son sürüme güncellemesidir. Bu, kararsız bir alfa derlemesine güncellenebileceği anlamına gelir.

Bu npm-check-updates yardımcı programını kullanırdım. Grubum bu aracı kullandı ve kararlı güncellemeleri yükleyerek etkili bir şekilde çalıştı.

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

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

3
rm -rf node_modulesdaha önce npm installbenim için bazı bağımlılık uyarılarından kurtuldu.
Michael Cole

1
Npm-check-updates çalıştırmadan önce package.json içinde "*" olması durumunda "0" veya "0.0" veya "0.0.0" olarak değiştirin.
igorpavlov

Bunu yapmanın en kolay yolu budur. Güçlük yok, kırılganlık yok. Tıkır tıkır çalışıyor. Tüm departmanlarınız güncellenir ve doğru şekilde kurulur. Thx
Yoraco Gonzales

38

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ığı güncellemek için aşağıdaki komutu kullanın:

npm install yourPackage@latest --save

Örneğin:

Dosyamın package.jsonbağımlılığı var:

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

o zaman yazmalıyım:

npm install @progress/kendo-angular-dateinputs@latest --save

Güzel ama görünüşe göre --save (veya --save-dev) güncelleme için zorunlu değil.
Burrich

35

Gerçekten npm-yükseltmeyi seviyorum çalışır gibi. Tüm bağımlılıklarınızın üzerinden geçen ve isterseniz en son sürüme göre güncel sürümü görmenizi sağlayan basit bir komut satırı yardımcı programıdır.

npm-upgradeProjenizin kök dizininde ( package.jsondosyanın yanında ) çalıştırıldıktan sonra ne olduğuna dair bir ekran görüntüsü :

npm yükseltme örneği

Her bağımlılık için yükseltme günlüğünü yükseltmeyi, yok saymayı, değişiklik günlüğünü görüntülemeyi veya işlemi bitirmeyi seçebilirsiniz. Şimdiye kadar benim için harika çalıştı.

EDIT: Bu komutun çalışması için yüklenmesi gereken bir üçüncü taraf paketidir. Npm ile birlikte gelmez:

npm install -g npm-upgrade

Ardından package.json dosyasına sahip bir projenin kök dizininden:

npm-upgrade

Dokümanlara bakıldığında, sadece yerel bağımlılıklarla çalışmak için inşa edilmiş gibi görünüyor
manncito

2
evet, başkalarına da değindi.
Martin Schneider

2
Hmm, npm-upgradebenim için çalışmadı, ama npm upgradeyaptı ve tam olarak aradığım şey olan package.json dosyasını güncelledi.
Grandizer

Hmm ilginç, bir hata oldu mu? Kullanmanın arkasındaki fikir npm-upgrade, neyin yükseltildiğini tam olarak görebilmeniz ve hangilerinin yükseltileceğini seçmenizdir. npm upgradeçoğu insan için iyi çalışabilir, ancak bazen yükseltme sırasında biraz daha kontrol sahibi olmanız gerekir.
manncito

1
Bunu npx ile de kullanabilirsiniz: npx npm-upgrade- oldukça havalı! :)
x-ışını

22

Anlamsal sürüm numaralarını eşleştirmek için temel bir normal ifade, böylece hepsini hızlı bir şekilde bir yıldız işaretiyle değiştirebilirsiniz.

Anlamsal Sürüm Normal İfade

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

Nasıl kullanılır

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

ekran görüntüsü: değiştirmek istediğiniz metni seçin

Yukarıdaki normal ifadeyi girin ve doğru metinle eşleştiğini doğrulayın.

screenshot: yukarıdaki semver normal ifadesini girin

Tüm eşleşmeleri yıldız işareti ile değiştirin.

screenshot: paket sürümlerini yıldız işareti ile değiştir

Çalıştırmak npm update --save


bir paket adında sayı olduğunda olmaz. yani: babel-önayar-es2015, babel-önayar-aşama-0, heks2rgba. Belki de başlangıç ​​/ teklif için çift arama:('|")([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
rofrol

1
birden fazla careti (ej Sublime Text) destekleyen herhangi bir düzenleyicide, ilkini seçebilir :ve ctrl+dhepsini seçinceye kadar birden çok kez basabilirsiniz , sonra sürüm numarasına gidin (sağ ok 2 kez basın) ve ctrl tuşuna basın, sonra yazın"*"
Ivan Castellanos

15

Son zamanlarda gruntfile.js büyüsü için npm ve package.json kullanan birkaç projeyi güncellemek zorunda kaldım. Aşağıdaki bash komutu (çok satırlı komut) benim için iyi çalıştı:

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

Burada fikir: npm outdatedÇıktıyı json olarak bağlamak için, jq
(jq bir json komut satırı ayrıştırıcısı / sorgu aracıdır)
( --depthargümanının kullanılmasına dikkat edin npm outdated)
jq, çıktıyı yalnızca en üst düzey paket adına indirir.
Sonunda xargs her LIBRARYNAME'i birer birernpm install LIBRARYNAME --save-dev komut

Yukarıdaki bir makine runnning benim için çalıştı: düğüm = v0.11.10 osx = 10.9.2 npm = 1.3.24

bu gerekli:
xargs http://en.wikipedia.org/wiki/Xargs (inandığım makineme özgü)
ve
jq http://stedolan.github.io/jq/ (ile kurdumbrew install jq )

Not: Güncellenmiş kütüphaneleri json anahtarının içinde paket.json'a devDependancieskullanarak kaydederim --save-dev, bu benim projelerimin bir gereksinimiydi, oldukça mümkün değil.

Daha sonra basit bir şeyle her şeyin et suyu olup olmadığını kontrol ediyorum.

npm outdated --depth=0

Ayrıca, mevcut en üst düzey yüklü kütüphane sürümlerini

npm list --depth=0

Ben jq seviyorum ve neredeyse her gün kullanmak, ama bu amaçla basit awkyerine:npm outdated --depth=0 | grep -v "^Package" | awk '{print $1}' | xargs npm install $1 --save-dev
Qorbani

1
Ben kullanıyorumcat package.json|jq -r '.devDependencies|keys|map(.+"@latest")|@sh'|xargs npm install --save-dev
Richard Ayotte

15

Eğer güzel bir (terminal için) interaktif raporlama arayüzü ile nazik bir yaklaşım kullanmak istiyorsanız npm-check kullanmanızı öneririz .

Daha az çekici ve bağımlılık güncellemeleriniz hakkında daha net bilgi ve kontrol sağlar.

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

resim açıklamasını buraya girin


14

Bu özellik tanıtıldı npm v5. kullanarak npm'ye güncellenpm install -g npm@latestve

güncellemek için package.json

  1. sil /node_modulesvepackage-lock.json (if you have any)

  2. çalıştırın npm update. bu, semver'e bağlı olarak package.json bağımlılıklarını en son sürüme güncelleyecektir .

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


13

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

yarn upgrade --latest

Onların Gönderen docs :

upgrade --latestKomut yükseltmeleri yükseltme komutu ile aynı paketler, ancak package.json belirtilen sürüm aralığı yok sayar. Bunun yerine, en son etiket tarafından belirtilen sürüm kullanılacaktır (paketleri büyük sürümler arasında yükseltebilir).


1
Bağımlılıkları güncelleme yok package.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

13

Npm 5.2.0 sürümünden itibaren, global npm kayıt defterinize veya uygulamanıza yerel olarak herhangi bir ek paket yüklemeden bunu tek bir satırda çalıştırmanın bir yolu vardır. Bu, npxnpm ile birlikte gelen yeni yardımcı programdan yararlanarak yapılabilir . ( Daha fazla bilgi için burayı tıklayın. )

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

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

Ben sadece denedim ve işe yarıyor ... sadece npm installyeni bağımlılıkları indirmek için çalıştırmak zorunda kaldı . Yani sanırım bu bir şey eksik olmadıkça paketi sadece günceller.
owsega

@owsega, kesinlikle haklısın, teşekkürler! Yanıtımı npm installbağımlılıklar güncellendikten sonra da çalışacak şekilde değiştirdim .
ilyakam

13

Bunu npm-checkbaşarmak için kullanıyorum .

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

resim açıklamasını buraya girin

Tam sürüm numaralarını tutacak başka bir kullanışlı komut listesi package.json

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

Bu var ncu -uolup ncu -uaikinci son satırında. Bir karakter değişikliğine izin verilmediği için düzenleme yapamıyorum. Bu arada çok yararlı.
Sohail Ahmed

10

Updtr!

Güncel olmayan npm'ye dayanarak, updtr en son sürümü yükler ve her bağımlılık için npm testi çalıştırır. Test başarılı olursa, updtr yeni sürüm numarasını paketinize kaydeder. Json. Test başarısız olursa, updtr değişikliklerini geri alır.

https://github.com/peerigon/updtr


9

Güncellemek package.jsoniçin kullanmam gereken komutlar NPM 3.10.10:

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

Arka fon:

@ Josh3736'dan en son komutu kullanıyordum ama package.jsongüncellenmedi. Daha sonra çalışırken açıklama metnini fark ettim npm-check-updates -u:

Aşağıdaki bağımlılık, bildirilen sürüm aralığı tarafından karşılanır, ancak yüklü sürüm geride kalır. Npm güncellemesini kullanarak paket dosyanızı değiştirmeden en son sürümü yükleyebilirsiniz. Yine de paket dosyanızdaki bağımlılığı güncellemek istiyorsanız, ncu -a komutunu çalıştırın.

Npm-check-updates belgelerini okuyarak 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ümü bildirilen semver bağımlılığını karşılayan bağımlılıkları bile dahil et

ncu, npm-check-updatesyazarken iletide görüldüğü gibi bir takma addır npm-check-updates -u:

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

Npm-check-updates v3'te -a, varsayılan davranıştır ve paketin üzerine yazılması yalnızca -useçeneğe bırakılır .
Raine Revere

8

Kullanıyorsanız yarn,yarn upgrade-interactive size modası geçmiş bağımlılıkları görüntüleyebilir ve ardından güncelleme istediğiniz hangilerinin seçmesine olanak verir gerçekten şık bir araçtır.

İpliği kullanmak için daha fazla neden npm. Heh.


İplik hızlı hareket ediyor, şimdiden 1.0'a çarptı ve kullanımı çok zevkli. Bu yeni seçilen cevap olmalıdır.
Josh Habdas

1
Bağımlılıkları güncellemiyor package.json- github.com/yarnpkg/yarn/issues/4390
Vandesh

5

Yukarıdaki komutlar güvensizdir çünkü sürümleri değiştirirken modülünüzü bozabilirsiniz. Bunun yerine aşağıdakileri öneriyorum

  • npm shrinkwrapKomut kullanarak gerçek geçerli düğüm modülleri sürümünü package.json olarak ayarlayın .
  • Https://github.com/bahmutov/next-update komut satırı aracını kullanarak TESTLERİNİZİ KIRMAZSA her bağımlılığı en son sürüme güncelleyin
npm install -g sonraki güncelleme
// paketinizden
Bir sonraki güncelleme

1
Aktif projeler için geriye dönük uyumsuz değişikliklerin önlenmesi gerekir. OP, işleri daha sonra değil, şimdi kırmak ve çalışmak için en son sürümlere sahip olmak istediğiniz yeni bir projeye başlamakla daha fazla ilgilidir .
Raine Revere

3

Npm 5 ve düğüm 8 kullanıyorsanız aşağıdaki komutu deneyin

npm güncellemesi - kaydet


2
updateKomut orijinal tanımının ötesinde bağımlılıklar çarpmak gibi görünmüyor. Eğer tam olarak package.jsonbeyan "1.2.3"ederseniz alamayacaksınız 1.2.4. İyi ya da kötü olabilir :)
Álvaro González

3

Aşağıdaki kod (kabul edildi) bana "çok uzun blah-blah alır" gibi bir şey yazdı ve hiçbir şey yapmadı. Muhtemelen küresel bayrağı kullanmak problemdi, idk.

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

Metin düzenleyicimi kullanmaya ve bunun yerine yarı manuel bir yaklaşım izlemeye karar verdim.

package.jsonNot defteri ++ metin editörüne dev bağımlılıklarından böyle bir liste (sadece çok daha uzun) 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, ^\s*"([^"]+)".*$paket adını almak için deseni kullandım ve onunla değiştirdim npm uninstall \1 --save-dev \nnpm install \1 --save-dev. "Tümünü değiştir" i 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 tuşuna bastım. Her şey yükseltilmiş ve iyi çalışıyor. Bu kadar.

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

Ben sadece büyük bir anlaşma olduğunu düşünmüyorum, çünkü sadece arada bir yapmak zorunda, ama kolayca package.jsonpaketleri ayrıştırır ve yükseltir bir komut dosyası yazabilirsiniz . Bu şekilde daha iyi olduğunu düşünüyorum, çünkü özel bir şeye ihtiyacınız varsa listenizi düzenleyebilirsiniz, örneğin bir lib'in mevcut sürümünü tutmak.


1
Npm-check-updates ile asılı terminal Windows'ta bilinen bir sorundur. --packageFile package.jsonStdin için beklememeyi bilmesi için eklemeyi deneyin .
Raine Revere

@RaineRevere Teşekkürler!
inf3rno


3

NPM'nin son sürümü için başka bir çözüm buldum. Ne yapmak istiyorum "*" bağımlılıkları açık en son sürüm numarası ile değiştirin. Tartışılan yöntemlerin hiçbiri benim için işe yaramadı.

Ben ne yaptım:

  1. Tüm "*" yerine "^ 0.0.0" yazın
  2. Çalıştırmak npm-check-updates -u

Package.json'daki her şey son sürüme güncellenmiştir.


3

Global npm-check-updates yüklemek istemiyorsanız, şunları yapabilirsiniz:

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()))"

2

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 burayı kontrol edebilirsiniz: https://www.npmjs.org/doc/misc/semver.html


Sürüm oluşturmanın bir nedeni, yeni ana sürümlerden geriye dönük uyumsuz değişiklikleri önlemektir. Bu veya '*' sürüm numaralarına karşı öneriyorum. OP, gerçekleştiği zaman kontrolünü sürdürürken süreci kolaylaştırmakla ilgilidir .
Raine Revere

2

Ek paketler olmadan çözüm

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

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

Sonra koş npm update --save.

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

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

Bu zor kısmı, yerel "tepki" sürümünün en yenisinden daha düşük olduğu anlamına gelir. Bu durumda npm indirilmiş ve güncellenmiş "tepki" paketi. Ancak yerel "tepki-google-maps" sürümünüz en yenisi ile aynıdır.

Hala değişmeden "güncellemek" *istiyorsanız, bu modülleri node_modulesklasörden silmeniz gerekir .

örneğin sil node_modules/react-google-maps.

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

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

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


1

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

Bu bir Github entegrasyonu ve ayarlanması inanılmaz derecede kolay. Yüklendiğinde, belirttiğiniz havuzlarda (veya istenirse tümünü) otomatik olarak çekme istekleri oluşturur ve sizi 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 PR'yi birleştirmeyi öğrenebilirsiniz.

greenkeeper PR 1 greenkeeper PR 2

Altta, ilk yapının ilk önce başarısız olduğunu ve bir taahhütten sonra ("düğüm v6.9'a yükseltme") testlerin geçtiğini görebilirsiniz, böylece sonunda PR'yi birleştirebilirim. Çok fazla emoji ile birlikte geliyor.

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


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

Uygulamanızla uyumlu en son istenen sürümleri almalısınız. Ama en son sürümleri değil.

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.