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!
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.
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
``
npm usang npm update git commit paket-lock.json ``
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.
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:
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
$ rm -rf node_modules
$ npm install
npm-shrinkwrap.json
dengan npm shrinkwrap
$ rm npm-shrinkwrap.json
$ npm shrinkwrap
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).
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 ;)
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.
*
sebagai versi rilis terbaru, termasuk yang tidak stabilterbaru
sebagai definisi versi untuk versi stabil terbaruLatestStablePackages
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"
},
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
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
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
Berikut adalah dasar-dasar regex untuk pertandingan semantik nomor versi sehingga anda dapat dengan cepat mengganti mereka semua dengan tanda bintang.
([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)
Pilih paket versi yang ingin anda ganti pada file JSON.
Masukan regex di atas dan pastikan itu's pencocokan teks yang benar.
Mengganti semua pertandingan dengan tanda bintang.
Menjalankan npm update-simpan
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
Fitur ini telah diperkenalkan di npm v5
. update ke npm menggunakan npm install-g npm@terbaru
dan
untuk update paket.json
hapus /node_modules
dan paket-lock.json (jika anda memiliki)
menjalankan npm update
. ini akan memperbarui paket dependensi.json terbaru, berdasarkan semver.
untuk update ke versi terbaru. anda dapat pergi dengan npm-check-update
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):
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
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
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.
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).
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.
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