Bagaimana cara menginstal versi persis tepat dari paket NPM?

917

Saya menggunakan nvm untuk mengunduh simpul v0.4.10 dan menginstal npm untuk bekerja dengan versi simpul itu.

Saya mencoba menginstal express menggunakan

npm install express -g

dan saya mendapatkan kesalahan yang menyatakan membutuhkan versi simpul> = 0.5.0.

Nah, ini aneh, karena saya mengikuti petunjuk untuk simpul + express + tutorial mongodb di sini yang menggunakan simpul v0.4.10, jadi saya menganggap express adalah / tersedia untuk simpul v0.4.10. Jika asumsi saya benar, bagaimana saya memberi tahu npm untuk mengambil versi yang akan berfungsi dengan pengaturan saya?

stewart99
sumber
7
Mengapa Anda tidak memperbarui versi Node Anda saja? Cukup yakin harus ada lebih banyak penambahan yang bagus daripada perilaku yang rusak yang akan Anda temukan.
Fabrício Matté
1
Terkadang itu bukan pilihan. Jika ia menggunakan nvm untuk menurunkan versi, mungkin ada alasan, seperti beberapa kelompok lain mengontrol versi simpul yang dapat dieksekusi yang harus ia gunakan.
fool4jesus

Jawaban:

1584

Jika Anda harus menginstal versi paket yang lebih lama, cukup tentukan saja

npm install <package>@<version>

Sebagai contoh: npm install [email protected]

Anda juga bisa menambahkan --saveflag ke perintah itu untuk menambahkannya ke dependensi package.json Anda, atau --save --save-exactflag jika Anda menginginkan versi yang tepat yang ditentukan dalam dependensi package.json Anda.

The installperintah didokumentasikan di sini: https://docs.npmjs.com/cli/install

Jika Anda tidak yakin versi paket apa yang tersedia, Anda dapat menggunakan:

npm view <package> versions

Dan npm viewdapat digunakan untuk melihat hal-hal lain tentang suatu paket juga. https://docs.npmjs.com/cli/view

Bret Copeland
sumber
4
Saya percaya ini akan menginstal versi utama terdekat yang cocok, jadi mungkin tidak seperti yang Anda harapkan stackoverflow.com/a/22345808/1074400
Aakil Fernandes
2
@AakilFernandes jika Anda menentukan versi yang tepat, versi yang tepat akan diinstal. Jika Anda menentukan rentang versi semantik, maka Anda mungkin mendapatkan kecocokan yang tidak tepat. Tidak ada yang unik tentang perintah instal dalam hal itu.
Bret Copeland
6
npm view <package> versions -jsonuntuk melihat setiap versi, hindari elipsis di akhir daftar dengan banyak versi.
TheDarkIn1978
5
Jika Anda menggunakan npm install [email protected], Anda tidak akan mendapatkan versi yang tepat 3.0.0, Anda akan mendapatkan versi 3.xx terbaru. Untuk mendapatkan versi spesifik, Anda harus menggunakan npm install [email protected] --save-exact. Lihat posting blog ini: 60devs.com/npm-install-specific-version.html
Patrick Hund
5
@PatrickHund tidak, npm install [email protected]Anda akan mendapatkan persis versi 3.0.0. npm install express@^3.0.0akan memberi Anda 3.xx terbaru --save-exactmempengaruhi bagaimana ini ditulis ke packages.json, yang sudah saya bahas dalam jawaban saya. Perhatikan juga, --save-exactharus digunakan dalam kombinasi dengan salah satu --saveatau --save-dev- tidak cukup untuk menggunakannya sendiri.
Bret Copeland
94

Cukup mudah. Tulis saja ini, misalnya:

npm install -g npm@4.6.1

Atau:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
inaps
sumber
1
Terima kasih untuk latestdan nexttag versi!
Jimmy Adaro
@inaps Anda dapat menambahkan catatan bahwa -gflag khusus untuk paket yang ingin Anda instal secara global karena banyak pengguna akan sampai ke halaman ini dan hanya menyalin / menempel tanpa menyadari bagaimana mereka akan berdampak pada ekosistem paket mereka. Kita semua telah menjadi "pria itu"
Jacksonkr
73

Pertama-tama hapus versi lama, lalu jalankan secara harfiah yang berikut:

npm install express@3.X

dan untuk stabil atau baru-baru ini

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release
Saurabh Chandra Patel
sumber
12
Apakah itu literal Xatau stand-in untuk beberapa nomor versi numerik?
Keith Thompson
7
Itu adalah pertanyaan baik / atau bukan pertanyaan ya / tidak. Saya mencoba npm install [email protected], dan tampaknya berhasil. Apakah itu fitur atau kecelakaan cara npmmem-parsing nomor versi?
Keith Thompson
3
@KeithThompson Ya, benar! Hehe, hanya bercanda ... npmBegini caranya
gonz
3
@ Gonz: Jadi ini literal X.
Keith Thompson
1
Saya hanya ingin membahas mengapa itu berhasil untuk Anda. Saya tidak tahu niat asli Saurabh atau apa yang Anda coba lakukan. 3.X berarti> = 3.0 dan <4.0.
gonz
41

Menurut saya itu cara termudah dan tercepat:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10

Oleg Bezkorovaynyi
sumber
2

Anda dapat memperbarui paket npm Anda dengan menggunakan perintah ini:

npm install <package_name>@<version_number>

contoh: npm install [email protected]

Mehedi Abdullah
sumber
1

Saya memiliki cara umum untuk menyelesaikan masalah jenis ini, yang bisa sangat membantu juga, terutama ketika mengkloning repositori untuk menjalankannya secara lokal, tetapi memerlukan sedikit lebih banyak analisis dari versi-versi tersebut.

Dengan paket tersebut npm-check-updatessaya memverifikasi versi paket (sesuai dengan file package.json) yang tidak dideklarasikan dalam versi terbaru yang tersedia, seperti yang ditunjukkan pada gambar ( https://www.npmjs.com/package/npm-check -tanggal ):

masukkan deskripsi gambar di sini

Dengan informasi ini kami dapat memverifikasi status pembaruan dari berbagai paket dan membuat keputusan tentang paket mana yang akan ditingkatkan / diturunkan dan mana yang tidak.

Dengan asumsi bahwa kami memutuskan untuk memperbarui semua paket yang terdaftar, kami dapat menggunakan ncu -uperintah yang hanya memodifikasi file package.json Anda. Larinpm install untuk memperbarui paket Anda yang terinstal dan package-lock.json.

Kemudian, tergantung pada persyaratan repositori, kita dapat memperbaiki apa yang diperlukan, menginstal versi tertentu dengan npm view <package> versionsdan npm install <package>@<version>

Alejandro Araujo
sumber
1

npm install -g npm@version

di mana Anda ingin menurunkan versi

npm install -g [email protected]

Lakshay Sharma
sumber
tetapi jika saya membutuhkannya secara lokal? apakah saya harus meletakkan --simpan?
AlexNikonov
Ya, Anda juga harus. Itu akan mengunduh paket secara lokal.
Lakshay Sharma
@AlexNikonov ommit -g(untuk pemasangan global, lalu mendarat di dir proyek Anda saat ini /node_modules) dan ya, --saveatau --save-devuntuk mendapatkan entri dipackage.json
Frank Nocke
0

Anda dapat menggunakan perintah berikut untuk menginstal versi sebelumnya dari paket npm:

npm install packagename@version
Pinky
sumber
0

Untuk pengguna benang:

yarn add package_name@version_number
Peter Moses
sumber
-3

Di Ubuntu Anda dapat mencoba perintah ini.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Versi spesifik: sudo n 8.11.3 bukan sudo n stable

Deepti Gehlot
sumber