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?


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 express@3.0.0

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


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 express@3.0.0, 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 express@3.0.0 --save-exact. Lihat posting blog ini: 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund tidak, npm install express@3.0.0Anda 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

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

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 express@3.X, 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


2

Anda dapat memperbarui paket npm Anda dengan menggunakan perintah ini:

npm install <package_name>@<version_number>

contoh: npm install yargs@12.02


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>


1

npm install -g npm@version

di mana Anda ingin menurunkan versi

npm install -g npm@3.10.10


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


-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.