Apa perbedaan praktis antara npm install
dan npm update
? Kapan saya harus menggunakan yang mana?
520
Perbedaan antara instalasi npm dan penanganan pembaruan npm dari versi paket yang ditentukan dalam package.json :
{
"name": "my-project",
"version": "1.0", // install update
"dependencies": { // ------------------
"already-installed-versionless-module": "*", // ignores "1.0" -> "1.1"
"already-installed-semver-module": "^1.4.3" // ignores "1.4.3" -> "1.5.2"
"already-installed-versioned-module": "3.4.1" // ignores ignores
"not-yet-installed-versionless-module": "*", // installs installs
"not-yet-installed-semver-module": "^4.2.1" // installs installs
"not-yet-installed-versioned-module": "2.7.8" // installs installs
}
}
Ringkasan : Satu-satunya perbedaan besar adalah modul yang sudah diinstal dengan versi fuzzy ...
npm install
npm update
Selain itu : install
dan update
secara default menangani devDependencies secara berbeda
npm install
akan menginstal / memperbarui devDependencies kecuali --production
flag ditambahkannpm update
akan mengabaikan devDependencies kecuali --dev
flag ditambahkanKenapa pakai npm install
sama sekali?
Karena npm install
tidak lebih ketika Anda melihat selain menangani dependensi Anda di package.json
. Seperti yang Anda lihat di instal npm, Anda dapat ...
PATH
) menggunakannpm install -g <name>
--force
~1.3
?npm install --save somePackage
save * ke dependensi?postinstall
dijalankan saat diinstal, tetapi tidak saat diperbarui.install
danupdate
bekerja secara berbeda pada URL git, tag git, dll. Yang ditentukan dalampackage.json
maka alangkah baiknya menambahkan kasus-kasus tersebut ke dalam contoh.1.3.0 -> 1.3.1
Ini mirip dengan^1.3.0
, di mana^
pembaruan versi utama, yaitu1.3.0 -> 1.4.0
.npm install menginstal semua modul yang terdaftar pada
package.json
file dan dependensinya.Pembaruan npm memperbarui semua paket dalam
node_modules
direktori dan dependensinya.npm install express menginstal hanya module express dan dependensinya.
npm update express update express module (dimulai dengan [email protected], ia tidak memperbarui dependensinya).
Jadi pembaruan adalah untuk saat Anda sudah memiliki modul dan ingin mendapatkan versi baru.
sumber
npm install
ataunpm update
? Atau, dengan kata lain, saya sekarang menggunakannpm install
dan tampaknya melakukan pembaruan juga, adakah alasan mengapa saya harus menggunakannpm update
?update
akan selalu memperbarui ke versi terbaru, terlepas dari package.json, sementarainstall
akan menghormati versi yang diberikan dalam package.json?update
menginstal (atau memperbarui ke) versi terbaru dari modul.install
menginstal versi terbaru dari modul jika tidak disajikan jika tidak membuat versi saat ini.npm update
akan memperbarui ke versi terbaru berdasarkan pada package.json Anda, tidak peduli itu Jika Anda memiliki "express": "3.x" dan Anda berada pada versi 3.1.0, itu akan diperbarui ke tag 3.x terbaru. Jika ada versi 4.x, itu tidak akan menginstal yang terbaru.Dalam kebanyakan kasus, ini akan menginstal versi terbaru dari modul yang diterbitkan pada npm.
atau lebih baik untuk meningkatkan modul ke penggunaan versi terbaru:
--save
: Paket akan muncul di dependensi Anda.Info lebih lanjut: npm-install
sumber
npm install express@latest --save --force
persis apa yang saya inginkan.Banyak perbedaan telah disebutkan. Ini satu lagi:
Menjalankan
npm install
di bagian atas direktori source Anda akan menjalankan berbagai script:prepublish
,preinstall
,install
,postinstall
. Bergantung pada apa yang dilakukan oleh skrip-skrip ini, anpm install
dapat melakukan lebih banyak pekerjaan daripada hanya menginstal dependensi.Saya baru saja menggunakan use case di mana
prepublish
akan meneleponmake
danMakefile
dirancang untuk mengambil dependensi jikapackage.json
sudah diperbarui. Memanggilnpm install
dari dalamMakefile
akan menyebabkan rekursi yang tak terbatas, sementara panggilannpm update
bekerja dengan baik, menginstal semua dependensi sehingga build dapat dilanjutkan meskipunmake
dipanggil secara langsung.sumber
redis
modul Anda , danother_module
memerlukan versi yang lebih lamaredis
,npm install other_module
akan menjamin bahwaother_module
akan menggunakan versi yang lebih lama. Itu dapat menambahkanother_module/node_modules/redis
jika perlu.npm update
: instal dan perbarui dengan modul simpul terbaru yang ada di package.jsonnpm install
: instal modul simpul yang didefinisikan dalam package.json (tanpa pembaruan)sumber
npm update
akan menghilangkan sejumlah besar dependensi dipackage-lock.json
. Untuk memiliki semua paket yang diperlukan tersedia danpackage-lock.json
untuk menjadi benar, saya selalu harus mengeksekusinpm install
setelahnyanpm update
.