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!
1859
32
Terlihat seperti npm-check-update adalah satu-satunya cara untuk membuat hal ini terjadi sekarang.
Pada npm <3.11:
Hanya mengubah setiap ketergantungan's versi
*
, kemudian jalankannpm update-simpan
. (Catatan: rusak dalam beberapa (3.11) versi npm).Sebelumnya:
Setelah:
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 dependensilihat https://www.npmjs.org/package/npm-check-updates
[EDIT] YANG sedikit kurang intrusif (menghindari global install) cara untuk melakukan hal ini jika anda memiliki versi modern dari
npm
adalah: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
ataunpm usang
untuk menunjukkan versi terbaru.Kemudian melakukan instalasi yang bersih (w/o rm aku punya beberapa ketergantungan peringatan)
Terakhir, simpan tepat untuk versi
npm-shrinkwrap.json
dengannpm shrinkwrap
Sekarang,
npm install
sekarang akan menggunakan yang tepat dalam versinpm-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).
npm usang
npm-check-update
npm shrinkwrap
p.s. Benang mengirimkan paket anda daftar ke Facebook.
Untuk update one ketergantungan ke versi terbaru tanpa harus secara manual membuka
paket.json
dan mengubahnya, anda dapat menjalankanyaitu
Untuk referensi, npm-install
Seperti dicatat oleh pengguna Vespakoen pada ditolak edit, it's juga memungkinkan untuk update beberapa paket sekaligus dengan cara ini:
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.
Versi Lense
Ini bekerja sebagai npm 1.3.15.
*
sebagai versi rilis terbaru, termasuk yang tidak stabilterbaru
sebagai definisi versi untuk versi stabil terbaruLatestStablePackages
Berikut ini sebuah contoh:
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:
Untuk melihat paket yang memiliki versi yang lebih baru tersedia, maka gunakan perintah berikut:
untuk update baru one ketergantungan hanya menggunakan perintah berikut:
Misalnya:
Saya
paket.json
file yang memiliki ketergantungan:kemudian saya harus menulis:
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 sebelahpaket.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.
Semantik Versi Regex
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:
Ide berikut ini: Untuk pipa
npm usang
output json, untukjq
(jq adalah json baris perintah parser/query tool) (perhatikan penggunaan--kedalaman
argumennpm usang
) jq akan strip output turun ke level atas nama paket saja. akhirnya xargs menempatkan masing-masing LIBRARYNAME satu pada satu waktu menjadinpm install LIBRARYNAME-simpan-dev
perintahDi 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
Juga, anda dapat memeriksa saat ini toplevel diinstal versi perpustakaan dengan
Fitur ini telah diperkenalkan di
npm v5
. update ke npm menggunakannpm install-g npm@terbaru
danuntuk update
paket.json
hapus
/node_modules
danpaket-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.Perintah lain yang berguna daftar yang akan menjaga tepat versi angka-angka dalam
paket.json
Updtr!
https://github.com/peerigon/updtr
Jika anda menggunakan benang, perintah berikut ini update semua paket untuk versi terbaru mereka:
benang meng-upgrade-terbaru
Dari mereka docs:
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
untukNPM 3.10.10
:Latar belakang:
Saya menggunakan terbaru perintah dari @josh3736 tapi saya
paket.json
tidak diperbarui. Saya kemudian melihat teks deskripsi ketika menjalankannpm-check-update -u
:Membaca dokumentasi untuk npm-check-update anda bisa melihat perbedaannya:
https://www.npmjs.com/package/npm-check-updates
ncu adalah alias untuk
npm-check-update
seperti yang terlihat dalam pesan ketika mengetiknpm-check-update -u
: