Saya memiliki proyek Node.js yang memerlukan Node versi 12 atau lebih tinggi. Apakah ada cara untuk menentukan ini di file paket.json, sehingga installer akan secara otomatis memeriksa dan memberi tahu pengguna jika mereka perlu memutakhirkan?
261
Jawaban:
Saya pikir Anda dapat menggunakan bidang "mesin":
Seperti yang Anda katakan kode Anda pasti tidak akan berfungsi dengan versi yang lebih rendah, Anda mungkin ingin bendera "engineStrict" juga:
Dokumentasi untuk file package.json dapat ditemukan di situs npmjs
Memperbarui
engineStrict
sudah tidak digunakan lagi, jadi ini hanya akan memberikan peringatan. Sekarang tergantung pada pengguna untuk menjalankannpm config set engine-strict true
jika mereka menginginkan ini.Perbarui 2
Seperti yang ditunjukkan di bawah ini, membuat
.npmrc
file di root proyek Anda (tingkat yang sama dengan file package.json Anda) dengan teksengine-strict=true
akan memaksa kesalahan selama instalasi jika versi Node tidak kompatibel.sumber
engineStrict
telah ditinggalkan selama beberapa bulan, menghasilkan peringatan saat digunakan. Dimulai dengan npm @ 3, nilai dari lapangan diabaikan, dan pelanggaran mesin hanya akan menghasilkan peringatan. Jika Anda, sebagai pengguna, menginginkan penegakan hukum engine yang ketat, jalankan saja npm config atur engine-strict true "cd .. && npm i <folder-name>
memeriksa proyek itu sendiri. Namun, ini akan memicu keseluruhan bangunan di dalamnya.engine-strict=true
ke .npmrc Anda sekarang memiliki efek yang samaMenambahkan
untuk
package.json
ke file
.npmrc
(dekat denganpackage.json
, direktori yang sama)sumber
npm install
; bekerja denganyarn
baikpackage.json
dengan "mesin" yang mirip dengan yang di atas (11.13.0
dan6.7.0
), dan.npmrc
dengan apa pun kecuali konten yang ditentukan di atas. Saya telah nvm beralih saya ke versi node yang lebih lama, kemudian berlarinpm install
, tetapi hanya menginstal dependensi dan bahkan tidak menyebutkan ketidakcocokan versi mesin.Sama seperti kata Ibam,
engineStrict
sekarang sudah usang. Tetapi saya telah menemukan solusi ini:check-version.js:
package.json:
Cari tahu lebih lanjut di sini: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Dan satu hal lagi. Dotfile '.nvmrc' dapat digunakan untuk membutuhkan versi node spesifik - https://github.com/creationix/nvm#nvmrc
Tapi, itu hanya dihormati oleh skrip npm (dan skrip benang).
sumber
.nvmrc
Jika Anda menggunakan NVM seperti ini , yang seharusnya Anda lakukan, maka Anda dapat menunjukkan versi nodejs yang diperlukan untuk proyek yang diberikan dalam
.nvmrc
file yang dilacak git :Ini tidak berlaku secara otomatis
cd
, yang waras: maka pengguna harus melakukan:dan sekarang versi node akan digunakan untuk shell saat ini.
Anda bisa mendaftar versi node yang Anda miliki dengan:
.nvmrc
didokumentasikan di: https://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrcCara otomatis memilih versi node pada
cd
diminta di: Secara otomatis beralih ke versi Node yang benar berdasarkan proyekDiuji dengan NVM 0.33.11.
sumber
Ada cara lain yang lebih sederhana untuk melakukan ini:
npm install Node@8
(menyimpan Node 8 sebagai dependensi dalam package.json)Ini berfungsi karena
node
hanya paket yang mengirimkan simpul sebagai paket binernya. Itu hanya termasuk sebagai node_module / .bin yang berarti hanya membuat simpul tersedia untuk skrip paket. Bukan shell utama.Lihat diskusi di Twitter di sini: https://twitter.com/housecor/status/962347301456015360
sumber
./node node-sass
bukan hanyanode-sass
. Tidak yakin apakah sama untuk semua file .bin.Contoh kasus uji Mocha:
sumber