Bagaimana cara update setiap ketergantungan dalam paket.json ke versi terbaru?

Saya menyalin paket.json dari proyek lain, dan sekarang ingin bertemu semua dependensi untuk versi terbaru mereka karena ini adalah proyek segar dan saya don't pikiran memperbaiki sesuatu jika rusak.

Apa's cara termudah untuk melakukan hal ini?

Cara terbaik yang saya tahu sekarang adalah untuk menjalankan npm info express versi kemudian memperbarui paket.json secara manual untuk masing-masing. Ada harus menjadi cara yang lebih baik.

{
  "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"
  }
}

UPDATE 5/1/19: Enam tahun kemudian dan saya masih mempertahankan npm-check-update sebagai solusi yang komprehensif untuk masalah ini. Nikmati!

Mengomentari pertanyaan (5)
Larutan

Terlihat seperti npm-check-update adalah satu-satunya cara untuk membuat hal ini terjadi sekarang.

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

Pada npm <3.11:

Hanya mengubah setiap ketergantungan's versi *, kemudian jalankan npm update-simpan. (Catatan: rusak dalam beberapa (3.11) versi npm).

Sebelumnya:

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

Setelah:

  "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"
  }

Tentu saja, ini adalah tumpul palu memperbarui dependensi. It's baik-baik saja jika—seperti yang anda katakan—proyek ini kosong dan tidak ada yang dapat mematahkan.

Di sisi lain, jika anda're bekerja di banyak proyek yang matang, anda mungkin ingin memverifikasi bahwa tidak ada perubahan melanggar dalam dependensi sebelum upgrade.

Untuk melihat modul yang usang, hanya menjalankan npm usang. Ini akan menampilkan daftar menginstal dependensi yang memiliki versi yang lebih baru tersedia.

Komentar (27)

npm-check-update adalah sebuah utilitas yang secara otomatis menyesuaikan paket.json dengan versi terbaru dari semua dependensi

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

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

[EDIT] YANG sedikit kurang intrusif (menghindari global install) cara untuk melakukan hal ini jika anda memiliki versi modern dari npm adalah:

$ npx npm-check-updates -u
$ npm install 
Komentar (14)

Diperbarui untuk NPM 7

npm 2+ (Node 0.12+):

``

npm usang npm update git commit paket-lock.json ``

Kuno npm (tahun 2014):

npm install-g npm-check-update npm-check-update npm shrinkwrap git commit paket-lock.json

Pastikan untuk shrinkwrap anda deps, atau anda mungkin berakhir dengan sebuah proyek mati. Aku mengeluarkan sebuah proyek lain di malam hari dan itu tidak't berjalan karena saya deps semua out of date/diperbarui/berantakan. Jika saya'd shrinkwrapped, npm akan dipasang persis apa yang saya butuhkan.


Detail

benang Facebook dan mengirimkan semua paket data ke Facebook sehingga mereka dapat menjualnya.

Bagi yang penasaran siapa yang membuatnya sejauh ini, di sini adalah apa yang saya sarankan:

Menggunakan npm-check-update atau npm usang untuk menunjukkan versi terbaru.

# `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

Kemudian melakukan instalasi yang bersih (w/o rm aku punya beberapa ketergantungan peringatan)

$ rm -rf node_modules
$ npm install 

Terakhir, simpan tepat untuk versi npm-shrinkwrap.json dengan npm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

Sekarang, npm install sekarang akan menggunakan yang tepat dalam versi npm-shrinkwrap.json

Jika anda memeriksa npm-shrinkwrap.json ke git, semua akan menginstal menggunakan persis sama versi.

Ini adalah cara untuk transisi dari pengembangan (semua update, semua waktu) untuk produksi (tidak ada sentuhan apa-apa).

p.s. Benang mengirimkan paket anda daftar ke Facebook.

Komentar (7)

Untuk update one ketergantungan ke versi terbaru tanpa harus secara manual membuka paket.json dan mengubahnya, anda dapat menjalankan

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

yaitu

npm install express@* --save

Untuk referensi, npm-install


Seperti dicatat oleh pengguna Vespakoen pada ditolak edit, it's juga memungkinkan untuk update beberapa paket sekaligus dengan cara ini:

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

Dia juga apports satu-liner untuk shell berdasarkan npm usang. Lihat sunting / sunting sumber untuk kode dan penjelasan.


PS: saya juga benci harus secara manual mengedit paket.json untuk hal-hal seperti itu ;)

Komentar (7)

Jika anda kebetulan menggunakan Kode Visual Studio sebagai IDE anda, ini adalah bersenang-senang sedikit ekstensi untuk membuat memperbarui paket.json` satu kali klik proses.

Versi Lense

Komentar (5)

Ini bekerja sebagai npm 1.3.15.

"dependencies": {
  "foo": "latest"
}
Komentar (3)
  1. Menggunakan * sebagai versi rilis terbaru, termasuk yang tidak stabil
  2. Gunakan terbaru sebagai definisi versi untuk versi stabil terbaru
  3. Memodifikasi paket.json dengan persis versi stabil terbaru menggunakan nomor LatestStablePackages

Berikut ini sebuah contoh:

"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"
},
Komentar (2)

Satu-satunya peringatan saya telah menemukan dengan jawaban terbaik atas adalah bahwa hal itu update modul ke versi terbaru. Ini berarti bisa update untuk aplikasi yang tidak stabil alpha build.

Saya akan menggunakan yang npm-check-update utility. Kelompok saya menggunakan alat ini dan bekerja secara efektif dengan menginstal stabil update.

Sebagai Etienne yang dinyatakan di atas: instal dan jalankan dengan ini:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 
Komentar (3)

Untuk melihat paket yang memiliki versi yang lebih baru tersedia, maka gunakan perintah berikut:

npm outdated

untuk update baru one ketergantungan hanya menggunakan perintah berikut:

npm install yourPackage@latest --save

Misalnya:

Saya paket.json file yang memiliki ketergantungan:

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

kemudian saya harus menulis:

npm install @progress/kendo-angular-dateinputs@latest --save
Komentar (1)

Aku benar-benar suka bagaimana npm-upgrade karya-karya. Ini adalah sederhana utilitas baris perintah yang berjalan melalui semua dependensi dan memungkinkan anda melihat versi saat ini dibandingkan dengan versi terbaru dan update jika anda ingin.

Berikut adalah screenshot dari apa yang terjadi setelah menjalankan npm-upgrade di root proyek anda (di sebelah paket.json file):

Untuk setiap ketergantungan anda dapat memilih untuk meng-upgrade, mengabaikan, melihat changelog, atau menyelesaikan proses. Ia telah bekerja besar bagi saya sejauh ini.

EDIT: ini adalah pihak ketiga paket yang harus diinstal sebelum perintah akan bekerja. Itu tidak datang dengan npm itu sendiri:

npm install-g npm-upgrade Kemudian dari akar sebuah proyek yang memiliki paket.file json: npm-upgrade

Komentar (7)

Berikut adalah dasar-dasar regex untuk pertandingan semantik nomor versi sehingga anda dapat dengan cepat mengganti mereka semua dengan tanda bintang.

Semantik Versi Regex


([>|
Komentar (2)

Saya baru-baru ini telah memperbarui beberapa proyek-proyek yang menggunakan npm dan paket.json untuk mereka gruntfile.js sihir. Berikut bash command (perintah multiline) bekerja dengan baik bagi saya:

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

Ide berikut ini: Untuk pipa npm usang output json, untuk jq (jq adalah json baris perintah parser/query tool) (perhatikan penggunaan --kedalaman argumen npm usang) jq akan strip output turun ke level atas nama paket saja. akhirnya xargs menempatkan masing-masing LIBRARYNAME satu pada satu waktu menjadi npm install LIBRARYNAME-simpan-dev perintah

Di atas adalah apa yang bekerja untuk saya pada mesin runnning: node=v0.11.10 osx=10.9.2 npm=1.3.24

ini diperlukan: xargs http://en.wikipedia.org/wiki/Xargs (asli mesin saya saya percaya) dan jq http://stedolan.github.io/jq/ (saya diinstal dengan minuman menginstal jq)

Catatan: saya hanya menyimpan diperbarui perpustakaan untuk paket.json dalam json kunci devDependancies dengan menggunakan - simpan-dev, itu adalah persyaratan dari proyek-proyek saya, sangat mungkin bukan milikmu.

Setelah itu saya memeriksa bahwa segala sesuatu adalah saus dengan sederhana

npm outdated --depth=0

Juga, anda dapat memeriksa saat ini toplevel diinstal versi perpustakaan dengan

npm list --depth=0
Komentar (2)

Fitur ini telah diperkenalkan di npm v5. update ke npm menggunakan npm install-g npm@terbaru dan

untuk update paket.json

  1. hapus /node_modules dan paket-lock.json (jika anda memiliki)

  2. menjalankan npm update. ini akan memperbarui paket dependensi.json terbaru, berdasarkan semver.

untuk update ke versi terbaru. anda dapat pergi dengan npm-check-update

Komentar (0)

Jika anda ingin menggunakan pendekatan yang lembut melalui indah (terminal) interaktif antarmuka pelaporan saya akan menyarankan menggunakan npm-cek.

It's kurang dari palu dan memberi anda lebih banyak akibat pengetahuan, dan kontrol atas, anda ketergantungan update.

Untuk memberikan anda sebuah rasa dari apa yang menanti di sini's screenshot (tergores dari git halaman untuk npm-check):

Komentar (0)

Sebagai npm versi 5.2.0, ada cara untuk menjalankan ini dalam satu baris tanpa menginstal paket-paket tambahan untuk anda global npm registry maupun lokal untuk aplikasi anda. Hal ini dapat dilakukan dengan memanfaatkan baru npx utilitas yang's dibundel dengan npm. (Klik di sini untuk mempelajari lebih lanjut.)

Jalankan perintah berikut di root proyek anda:

shell npx npm-check-update -u && npm saya

Komentar (2)

Saya menggunakan npm-check untuk mencapai hal ini.

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

Perintah lain yang berguna daftar yang akan menjaga tepat versi angka-angka dalam paket.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
Komentar (1)

Updtr!

Berdasarkan npm usang, updtr menginstal versi terbaru dan berjalan npm tes untuk setiap ketergantungan. Jika tes berhasil, updtr menyimpan nomor versi baru untuk paket anda.json. Jika pengujian gagal, namun, updtr gulungan kembali perubahannya.

https://github.com/peerigon/updtr

Komentar (0)

Jika anda menggunakan benang, perintah berikut ini update semua paket untuk versi terbaru mereka:

benang meng-upgrade-terbaru

Dari mereka docs:

meng-terbaru command upgrade paket yang sama seperti perintah upgrade, tapi mengabaikan versi rentang yang ditentukan dalam paket.json. Sebaliknya, versi ditentukan oleh tag terbaru yang akan digunakan (berpotensi upgrade paket di versi utama).

Komentar (0)

Jika anda menggunakan benang, benang meng-interaktif adalah benar-benar ramping alat yang dapat memungkinkan anda untuk melihat anda usang dependensi dan kemudian pilih mana yang ingin anda perbarui.

Lebih banyak alasan untuk menggunakan Benang atas npm. Heh.

Komentar (1)

Perintah yang saya gunakan untuk update paket.json untuk NPM 3.10.10:

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

Latar belakang:

Saya menggunakan terbaru perintah dari @josh3736 tapi saya paket.json tidak diperbarui. Saya kemudian melihat teks deskripsi ketika menjalankan npm-check-update -u:

berikut ketergantungan puas dengan menyatakan berbagai versi, tapi versi yang terpasang di belakang. Anda dapat menginstal terbaru versi tanpa memodifikasi file paket dengan menggunakan npm update. Jika anda ingin memperbarui ketergantungan dalam paket file bagaimanapun, menjalankan ncu -a.

Membaca dokumentasi untuk npm-check-update anda bisa melihat perbedaannya:

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

-u, --upgrade: menimpa file paket

-a, --upgradeAll: mencakup bahkan mereka dependensi yang terbaru versi memenuhi menyatakan semver ketergantungan

ncu adalah alias untuk npm-check-update seperti yang terlihat dalam pesan ketika mengetik npm-check-update -u:

[INFO]: You can also use ncu as an alias
Komentar (1)