Pertanyaan Bagaimana cara memperbarui setiap dependensi dalam paket.json ke versi terbaru?


Saya menyalin package.json dari proyek lain dan sekarang ingin menabrak semua dependensi ke versi terbaru mereka karena ini adalah proyek baru dan saya tidak keberatan memperbaiki sesuatu jika rusak.

Apa cara termudah untuk melakukan ini?

Cara terbaik yang saya tahu sekarang adalah berlari npm info express version kemudian perbarui paket.json secara manual untuk masing-masing. Harus ada 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"
  }
}

Saya sekarang menjadi kolaborator npm-cek-pembaruan, yang merupakan solusi bagus untuk masalah ini.


1429
2018-04-18 02:39


asal


Jawaban:


Seperti npm-cek-pembaruan adalah satu-satunya cara untuk mewujudkannya sekarang.

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

Pada npm <3,11:

Ubah saja setiap versi dependensi *, lalu lari npm update --save. (catatan:  rusak dalam versi npm baru-baru ini (3.11)).

Sebelum:

  "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 palu tumpul untuk memperbarui dependensi. Tidak apa-apa jika — seperti yang Anda katakan — proyek itu kosong dan tidak ada yang bisa dihancurkan.

Di sisi lain, jika Anda bekerja dalam proyek yang lebih matang, Anda mungkin ingin memverifikasi bahwa tidak ada perubahan dalam ketergantungan Anda sebelum meningkatkan.

Untuk melihat modul mana yang ketinggalan jaman, jalankan saja npm outdated. Ini akan mendaftar semua dependensi yang terinstal yang memiliki versi lebih baru.


1689
2018-04-18 03:35



npm-check-updates adalah 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 

863
2018-04-03 21:53



TLDR; (diperbarui untuk versi NPM yang lebih baru)

Banyak hal telah berubah sedikit karena jawaban-jawaban ini aslinya ditulis.

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

Npm yang lebih lama: npm-check-updates paket + npm shrinkwrap

Pastikan untuk menyusut deps Anda, atau Anda mungkin berakhir dengan proyek mati. Saya mengeluarkan sebuah proyek beberapa hari yang lalu dan itu tidak akan berjalan karena deps saya semuanya ketinggalan zaman / diperbarui / berantakan. Jika saya menyusut, npm akan menginstal persis apa yang saya butuhkan.


Detail

Bagi yang penasaran yang sampai sejauh ini, inilah yang saya sarankan:

Menggunakan npm-check-updates atau npm outdated untuk menyarankan 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 lakukan instalasi bersih (tanpa rm saya mendapat beberapa peringatan ketergantungan)

$ rm -rf node_modules
$ npm install 

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

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

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

Jika Anda memeriksanya npm-shrinkwrap.json ke git, semua pemasangan akan menggunakan versi yang sama persis.

Ini adalah cara untuk transisi keluar dari pengembangan (semua pembaruan, sepanjang waktu) ke produksi (tidak ada yang menyentuh apa pun).


294
2018-06-02 22:29



Untuk memperbaharui satu ketergantungan ke versi terbaru tanpa harus membuka secara manual package.json dan mengubahnya, Anda bisa berlari

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

yaitu

npm install express@* --save

Sebagai referensi, npm-install


Sebagaimana dicatat oleh pengguna Vespakoen pada pengeditan yang ditolak, Anda juga dapat memperbarui beberapa paket sekaligus dengan cara ini:

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

Dia juga menggunakan satu baris untuk shell berdasarkan npm outdated. Lihat hasil edit untuk kode dan penjelasan.


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


155
2018-04-30 14:51



Jika Anda kebetulan menggunakan Kode Visual Studio sebagai IDE Anda, ini adalah ekstensi kecil yang menyenangkan untuk melakukan pembaruan package.json proses satu klik.

Versi Lense

enter image description here


50
2018-03-27 20:00



Ini bekerja pada npm 1.3.15.

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

49
2018-01-21 22:35



  1. Menggunakan * sebagai versi untuk rilis terbaru, termasuk tidak stabil
  2. Menggunakan latest sebagai definisi versi untuk versi stabil terbaru
  3. Ubah paket.json dengan tepat menggunakan nomor versi stabil terbaru LatestStablePackages

Berikut ini contohnya:

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

38
2018-01-23 03:45



Satu-satunya peringatan yang saya temukan dengan jawaban terbaik di atas adalah bahwa ia memperbarui modul ke versi terbaru. Ini berarti ini bisa diperbarui ke build alfa yang tidak stabil.

Saya akan menggunakan utilitas npm-check-updates. Grup saya menggunakan alat ini dan itu bekerja efektif dengan memasang pembaruan stabil.

Seperti Etienne nyatakan di atas: instal dan jalankan dengan ini:

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

34
2018-02-11 23:37



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

npm outdated

untuk memperbarui saja satu ketergantungan hanya menggunakan perintah berikut:

npm install yourPackage@latest --save

Sebagai contoh:

Saya package.json file memiliki ketergantungan:

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

maka saya harus menulis:

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

24
2017-12-07 07:01



Berikut ini adalah regex dasar untuk mencocokkan nomor versi semantik sehingga Anda dapat dengan cepat mengganti semuanya dengan tanda bintang.

Versi Semantik Regex

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

Bagaimana cara menggunakan

Pilih versi paket yang ingin Anda ganti dalam file JSON.

screenshot:select the text you want to replace

Masukkan regex di atas dan verifikasi bahwa itu cocok dengan teks yang benar.

screenshot:input the semver regex above

Ganti semua pertandingan dengan tanda bintang.

screenshot:replace package versions with an asterisk

Menjalankan npm update --save


21
2018-03-04 15:21



Saya sangat suka bagaimana caranya npm-upgrade bekerja. Ini adalah utilitas baris perintah sederhana yang melewati semua dependensi Anda dan memungkinkan Anda melihat versi saat ini dibandingkan dengan versi terbaru dan memperbarui jika Anda mau.

Berikut ini screenshot dari apa yang terjadi setelah berlari npm-upgrade di akar proyek Anda (di sebelah package.json mengajukan):

npm upgrade example

Untuk setiap ketergantungan, Anda dapat memilih untuk meningkatkan, mengabaikan, melihat changelog, atau menyelesaikan proses. Ini telah bekerja sangat baik untuk saya sejauh ini.


21
2017-08-22 20:08