


Artikel untuk membincangkan lima peringkat pembangunan pengurusan pakej Node
Sejak kelahiran Node pada tahun 2009, ekosistem Node telah berkembang dan berkembang, pengurus pakej Node yang diperoleh daripada ekosistem Node telah berkembang maju, termasuk npm, kpm, pnpm, yarn, cnpm, dsb. Sebenarnya, pembangunan pengurus pakej Node terbahagi terutamanya kepada 5 peringkat Mari kita lihat ciri utama dan produk perwakilan setiap peringkat~
<.>
Fasa Satu: Tebas dan Bakar
Setepatnya, Node tidak wujud tanpa pengurus pakej pada tahun 2009, apabila Node.js keluar prototaip npm juga dikeluarkan. [Cadangan tutorial berkaitan:tutorial video nodejs, Pengajaran pengaturcaraan]
Nama penuh npm ialah Pengurus Pakej Node.js daripadaSejarah ringkas Node. js Anda boleh melihatnya di dalam
2009 Node.js is born The first form of npm is created
- Cari tapak web rasmi setiap perisian dalam talian, seperti jQuery; dan letakkannya dalam projek yang dipanggil direktori libs;
- Jika anda ingin menjadikannya lebih mudah, tampal pautan CDN terus ke dalam HTML
- Pengurusan modular pada masa itu? Pengurusan nombor versi? Bergantung pada peningkatan? Tiada satu pun daripada mereka wujud! Fasa 2: Pemasangan bersarang
- Pada tahun 2009, Node.js telah dilahirkan, dan prototaip npm juga telah dikeluarkan pada tahun 2011; dibina di sekitar Kawalan versi Semantik direka bentuk dengan idea semver Secara lalai, pembangun pakej Node akan meningkatkan nombor versi mengikut spesifikasi semver apabila menaik taraf nombor versi tersuai bagi pakej bergantung.
Kata Ganti Nama:
Penyeragaman pengurusan pakej nod, kebergantungan storan bersarang direktori node_modulesProduk perwakilan:
npm v1, versi v2Ciri utama:
(1) Pemasangan bersarang bagi pakej bergantung, kebergantungan versi yang sama akan dipasang secara berlebihan(2) Ketidakpastian pemasangan pakej bergantung: Yang terkini versi pakej kebergantungan dipasang secara lalai (versi tetap boleh ditetapkan)
(3) Pemasangan bersiri kebergantungan lambat;Pemasangan bersarang
, jika A bergantung pada B dan B bergantung pada C, direktori node_modules adalah seperti berikutMasalah:
Ketergantungan bersarang Ini selalunya akan menyebabkan neraka bersarang Pada masa yang sama, akan terdapat sejumlah besar pemasangan berlebihan bagi pakej bergantung yang sama, menyebabkan node_modules menjadi terlalu besar, memerlukan pengaturcara untuk kerap rm -rf node_modules. banyak program pada sistem Windows tidak boleh mengendalikan lebih daripada 260 aksara nama laluan fail, pengguna awal npm Windows telah melihat tetingkap timbul iniPenjelasan 2. : Versi kebergantungan terkini dipasang secara lalai untuk setiap pemasangan npm , menyebabkan pemasangan kebergantungan
node_modules - package-A -- node_modules --- package-B ----- node_modules ------ package-C -------- some-really-really-really-long-file-name-in-package-c.js
Masalah:
pembantu menyeragamkan versi komposisi nombor: X.Y.Z-[state], naik taraf nombor versi Spesifikasi adalah seperti berikut
X ialah nombor versi utama: Apabila perubahan API tidak serasi dengan versi lama, naik taraf major nombor versi Y ialah nombor versi kecil: Ditambah API Baharu, tetapi serasi ke belakang, tingkatkan nombor versi kecil Z ialah nombor versi tampung: Apabila pembaikan kecacatan serasi ke belakang dibuat,
keadaan boleh menjadi: alpha (beta dalaman) , beta (beta awam), gamma (versi beta agak matang), rc (pra-keluaran)Sebab mengapa versi tidak pasti
- : Apabila melaksanakan arahan kebergantungan pemasangan lalai npm, npm berpendapat Pembangun akan mengikuti spesifikasi peningkatan versi semver dan memasang terus versi terkini pakej kebergantungan untuk pembangun
- Penyelesaian 1 : Gunakan perintah npm config set save-exact true untuk mematikan penggunaan di hadapan kelakuan lalai nombor versi ^
- Ringkasan: Tidak dapat menyelesaikan masalah kebergantungan perpustakaan kebergantungan sendiri memasang versi terkini secara lalai
Penyelesaian 2: npm menyediakan arahan shrinkwrap , fail akan dihasilkan untuk merekodkan versi yang tepat untuk semua perpustakaan dan semua perpustakaan bergantung bersarang
- Ringkasan: Fail kunci tidak akan dijana secara lalai dan memerlukan pengguna untuk melaksanakan arahan secara manual; Bergantung pada pengguna mengetahui arahan ini, ia agak menyusahkan
- Fasa 3: Pemasangan rata
npm-shrinkwrap.json
Pada tahun 2015, untuk menyelesaikan masalah pembenaman dalam npm1 dan npm2 Untuk menyelesaikan masalah pemasangan pakej dan versi yang tidak konsisten, program npm telah sepenuhnya ditulis semula- Kata Ganti Nama:
Pemasangan dengan kurang kebergantungan berlebihan, direktori node_modules diratakan untuk menyimpan kebergantungan
versi npm v3 Penerangan ringkas tentang prinsip: Apabila npm memasang, bina pepohon kebergantungan dahulu dan kemudian pasang semua kebergantungan dalam direktori akar node_modules Apabila sub-bergantungan menemui versi kebergantungan yang berbeza dengan nama yang sama, ia akan dipasang dalam Under your own node_modules
Ciri utama:
(1) Kurangkan pemasangan berlebihan: bergantung pada pemasangan rata, yang mengurangkan pemasangan pakej berlebihan di bawah tertentu keadaan
Masalah sedia ada:
(1) "Pergantungan hantu", "Pergantungan hantu" Masalah
(2) "Orang asing kembar", " Pakej kebergantungan" "Klon" masalah
(3) Direktori tidak tetap: susunan pemasangan kebergantungan menentukan struktur direktori node_module
Penjelasan 1: Susunan pemasangan kebergantungan menentukan struktur direktori node_modules
Senario berikut: App1 bergantung pada packageA dan packageC dan packageG dan packageH, dan packageA dan packageC kedua-duanya bergantung pada packageB v1.0, dan packageG dan packageH kedua-duanya bergantung pada versi v2.0 packageB
Jika packageA atau packageC dipasang dahulu, direktori node_modules adalah seperti berikut

Jika packageG atau packageH ialah dipasang dahulu, direktori node_modules adalah seperti berikut
Sebagai tindak balas kepada situasi di atas, npm menyediakan arahan npm dedupe
untuk menyusun & memudahkan struktur direktori node_modules struktur direktori node_modules adalah konsisten dan tidak dipengaruhi oleh susunan pemasangan pakej bergantung
Penjelasan 2: Ia mungkin tidak semestinya mengurangkan pemasangan pakej berlebihan
Melalui Contoh 1, dapat dilihat bahawa walaupun pakej kebergantungan dipasang secara rata, masih terdapat pakej kebergantungan versi yang sama, dan terdapat Pakej Yu yang berlebihan
Penjelasan 3: Masalah "Twin Strangers"
Rujuk Contoh 1, versi pakej bergantung yang sama telah dipasang dua kali dan diletakkan di dua tempat , fenomena ini dipanggil "orang asing kembar"
Penjelasan 4: "Kebergantungan hantu " masalah
pakej kebergantungan dalam direktori peringkat pertama node_modules, pembangun boleh Jika digunakan secara terus, tetapi pakej kebergantungan tidak ditakrifkan dalam package.json, pakej kebergantungan tersebut dipanggil "kebergantungan hantu". Jika "ghost dependency" digunakan dalam projek hadapan, masalah mungkin berlaku kemudian.
Oleh kerana "kebergantungan hantu" ini mungkin dialih keluar bersama-sama dengan peningkatan kebergantungan lain, ia tidak akan wujud lagi dalam node_modules Apabila melaksanakan pemasangan npm, "kebergantungan hantu" tidak akan dipasang secara subjektif Hasilnya, projek tidak dapat mencari pakej bergantung dan kemudian melaporkan ralat.
Fasa 4: Keselamatan dan mempercepatkan
Pada tahun 2016, versi keluaran benang dan pnpm muncul satu demi satu, yang pada tahap tertentu menyelesaikan ketidakpastian versi pemasangan sebelumnya dan kelajuan pemasangan. Kelambatan dan masalah lain, keupayaan pertama kali dilancarkan oleh benang lebih menarik perhatian daripada npm, memastikan konsistensi & keselamatan, dan meningkatkan kelajuan pemasangan
Kata ganti nama: Pemasangan bergantung adalah agak selamat, Percepatkan
Produk wakil: versi keluaran benang, versi keluaran pnpm, versi npm v5 (npm v4 tidak banyak berubah, v5 adalah langkah besar ke hadapan)
Ciri utama:
(1) Keselamatan: Fail kunci versi dijana secara lalai, memastikan versi bergantung adalah sama setiap kali anda memasangnya
(2) Mempercepatkan: Menambah cache luar talian Pemasangan, pemasangan selari, cuba semula automatik selepas pengecualian pemasangan
(3) ruang kerja: benang disokong daripada versi v1, dan boleh mengurus pakej pergantungan berbilang projek dengan cekap ; hanya npm v7 menyokong ruang kerja
Masalah sedia ada:
(1) Kebergantungan hantu
(2) Pemasangan berulang bagi projek tunggal dan silang pakej kebergantungan projek
(3) Direktori tidak tetap: susunan pemasangan kebergantungan menentukan struktur direktori node_module
Penjelasan 1: Mengenai keselamatan
Versi benang v0.x adalah yang pertama, versi npm v5.x lebih ketat Selepas itu, apabila memuat turun kebergantungan, fail kunci kebergantungan dijana secara lalai, yang mengunci versi dengan tepat pada nilai
- yarn's . fail kunci: ia hanya merekodkan versi pergantungan yang dipasang dan perlu digabungkan dengan package.json Tentukan struktur direktori node_modules
- fail .lock npm: merekodkan versi pergantungan yang dipasang dan struktur direktori node_modules
Ringkasan: Mengelakkan keperluan untuk memasang kebergantungan pada terminal yang berbeza Masalah ketidakkonsistenan versi, tetapi masalah "kebergantungan hantu" masih wujud
Penjelasan 2: Mengenai peningkatan kelajuan - cache luar talian
versi npm v2 menyokong caching, tetapi memerlukan sambungan Internet untuk pengesanan , untuk menggunakan kebergantungan cache
versi v0.x yarn ialah yang pertama menyokong cache luar talian yang dimuat turun daripada rangkaian akan dicache secara global. Pemasangan seterusnya akan memberi keutamaan untuk mencari secara setempat dan menyalin terus jika ditemui
Versi npm v5 menulis semula sistem cache dan juga menyokong pemasangan luar talian dengan sangat baik
Penjelasan 3: Mengenai peningkatan kelajuan - pemasangan selari
benang adalah yang pertama menyokong kebergantungan Pakej dipasang secara selari Sebelum ini, npm memasang kebergantungan secara bersiri pemasangan selari
Penjelasan 4: Selepas memasang kebergantungan, direktori node_modules disusun secara automatik
Masa mula :versi yarn v1.x, versi npm v4.x
- Jika fail
.lock
dipadamkan daripada projek, direktori node_modules akan disusun secara automatik apabila kebergantungan dimulakan untuk dipasang untuk versi sebelum npm v4 >Oleh kerana node_modules ialah kebergantungan pengurusan rata, kebergantungan dalam boleh dipasang dalam direktori peringkat pertama; apabila versi kebergantungan yang berbeza dipasang dalam projek dan konflik versi kebergantungan ditemui, kebergantungan dalam akan dialihkan secara automatik dari direktori peringkat pertama ke direktori induk direktori npm dedupe
【Disahkan】
Fasa 5: Lebih selamat, kelajuan tinggi, penggunaan rendah
Menghadapi kematangan pnpm, Pembangun menikmati faedah penggunaan storan yang lebih selamat, lebih cepat, dan lebih rendah yang dibawa oleh pnpm, menyelesaikan masalah "hantu kebergantungan" dan menyelesaikan masalah kebergantungan berulang
Kata Ganti Nama:
Keselamatan (Bergantung pada pemasangan WYSIWYG ), kelajuan tinggi (tiada pemasangan berulang), penggunaan storan rendah (pautan keras + pautan lembut) Produk wakil:
pnpmCiri-ciri utama:
(1) Sangat pantas
: Pusat storan mengurus kebergantungan secara berpusat dan dikaitkan secara langsung dengan projek. Berbanding dengan kaedah kerja sebelumnya, sejumlah besar operasi IO daripada salinan global node_modules ke dalam projek dikurangkan node_modules/.pnpm
(2) Penggunaan cakera sangat tinggi
: Kongsi kebergantungan versi yang sama merentas projek: pautan keras, pautan lembut
Maksimumkan penggunaan semula versi berbeza bagi kebergantungan yang sama: hanya tambahkan fail Diff untuk menyimpan versi berbeza -
- (3 ) Keselamatan tinggi: Struktur direktori node_modules ialah senarai kebergantungan package.json, yang menyelesaikan masalah "kebergantungan hantu"
Prestasinya adalah seperti berikut :
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati:
tutorial nodejs
!


npm dedupe
untuk menyusun & memudahkan struktur direktori node_modules struktur direktori node_modules adalah konsisten dan tidak dipengaruhi oleh susunan pemasangan pakej bergantung .lock
dipadamkan daripada projek, direktori node_modules akan disusun secara automatik apabila kebergantungan dimulakan untuk dipasang untuk versi sebelum npm v4 >Oleh kerana node_modules ialah kebergantungan pengurusan rata, kebergantungan dalam boleh dipasang dalam direktori peringkat pertama; apabila versi kebergantungan yang berbeza dipasang dalam projek dan konflik versi kebergantungan ditemui, kebergantungan dalam akan dialihkan secara automatik dari direktori peringkat pertama ke direktori induk direktori npm dedupe
【Disahkan】node_modules/.pnpm
(2) Penggunaan cakera sangat tinggi

Atas ialah kandungan terperinci Artikel untuk membincangkan lima peringkat pembangunan pengurusan pakej Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

Apakah sistem log masuk tunggal? Bagaimana untuk melaksanakannya menggunakan nodejs? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan sistem log masuk tunggal. Saya harap ia akan membantu anda!
