Rumah >hujung hadapan web >tutorial css >Cara Memasang Pakej NPM

Cara Memasang Pakej NPM

Jennifer Aniston
Jennifer Anistonasal
2025-03-15 09:57:08833semak imbas

Cara Memasang Pakej NPM

Ketahui lebih lanjut mengenai npm! Dalam bab sebelumnya, kami telah mempelajari Node dan Pengurus Pakej, dan juga memasang Node dan NPM dan menjadi biasa dengan Pengurus Versi Node (NVM). Bahagian seterusnya panduan pemula NPM ini akan memperkenalkan apa yang paling anda peduli: memasang pakej NPM .

Bab Panduan

  1. Siapa panduan ini?
  2. Apa maksud "npm"?
  3. Apakah baris arahan?
  4. Apa itu nod?
  5. Apa itu Pengurus Pakej?
  6. Bagaimana cara memasang npm?
  7. Bagaimana cara memasang pakej npm? (Lokasi semasa anda!)
  8. Apakah arahan NPM?
  9. Bagaimana cara memasang projek NPM yang sedia ada?

Contoh cepat

Kami boleh memasang pakej pertama kami menggunakan arahan npm install (atau disingkat sebagai npm i ) dan nama pakej untuk ditambah ke projek. Sebagai contoh, pakej nod Sass hanya dipanggil "sass", yang bermaksud kita boleh menambahkannya ke projek seperti ini (pastikan anda terlebih dahulu berada dalam folder baru yang dibuat untuk projek kecil ini):

 NPM Pasang SASS

Itu sahaja! Selepas memasuki arahan ini, NPM akan mula bekerja dengan segera:

Apa yang berlaku di sebalik tabir ialah NPM cuba mencari pakej yang dinamakan SASS dalam pendaftaran pakej NPM. Jika pakej dijumpai (ia tidak) NPM memasangnya ke dalam folder node_modules yang dihasilkan secara automatik dalam projek (lebih banyak lagi di kemudian hari) (terletak di folder Root Project), termasuk semua yang perlu dijalankan oleh pakej. (Itulah sebabnya anda melihat NPM menambah 16 pakej dan mengkaji sejumlah 17 pakej npm dan bukan hanya pakej SASS itu sendiri - ia juga mempunyai dependensi!)

Selepas menjalankan arahan pemasangan, anda mungkin melihat bahawa anda tidak melihat apa -apa yang dipanggil "sass" dalam folder projek, yang berbeza dari apa yang anda harapkan. Anehnya, kami melihat tiga projek baru dalam folder projek: Dua fail JSON bernama package.json dan package-lock.json , dan folder node_modules baru.

Apa ini? Kami memerlukan NPM untuk memasang SASS, tidak semua perkara ini. Ini bukan sebahagian daripada Sass ... betul? Ya, ini betul, tetapi ada penjelasan yang baik mengapa projek -projek baru ini dihasilkan dalam folder projek. Mari lihat apa yang baru saja berlaku.

Apa yang berlaku semasa memasang pakej

Semasa memasang (atau menyahpasang atau mengemas kini) pakej, NPM melakukan kebanyakan atau bahkan semua empat perkara berikut:

  1. Kemas kini fail package.json dalam projek seperti yang diperlukan;
  2. Kemas kini package-lock.json Fail (dipanggil "Lock File") dengan semua butiran teknikal;
  3. Pasang fail pakej sebenar -dan mana -mana pakej lain yang pakej asal mungkin bergantung pada (dalam folder node_modules );
  4. Jalankan audit pakej yang dipasang.

Mari memperkenalkannya satu persatu.

Package.json dan Packet-lock.json

Kedua -dua fail JSON ini bekerjasama untuk memastikan pembalakan yang tepat dari semua kebergantungan dalam projek (dan semua kebergantungan mereka , semua kebergantungan mereka, dan sebagainya). Perbezaan antara kedua-duanya adalah sedikit teknikal, tetapi hanya meletakkan: fail kunci adalah gambaran yang mendalam, tepat dari pokok pergantungan projek, manakala package.json adalah gambaran keseluruhan peringkat tinggi yang boleh mengandungi perkara-perkara lain. Pakej utama yang anda pasang boleh disenaraikan dalam package.json , tetapi package-lock.json adalah di mana anda menjejaki seluruh pokok pergantungan.

Fail kunci tidak boleh dikemas kini secara manual sama ada; Oleh itu, pastikan untuk mengelakkan fail kunci yang mengelirukan dengan fail package.json .

Apabila anda berkongsi atau bekerjasama dengan orang lain dalam projek, NPM tahu sumber projek dan apa yang dipasang dalam projek melalui kedua -dua fail ini. Terima kasih kepada maklumat ini, ia boleh menyalin persekitaran dengan tepat pada mesin orang lain. Kedua -dua fail hendaklah dikemukakan kepada repositori Git anda dan berfungsi sebagai pelan tindakan ketergantungan untuk projek anda. Dengan cara ini, apabila pemaju lain pada pasukan anda mengikat repositori dan menjalankan perintah npm install , NPM tahu dengan tepat pakej mana yang akan dipasang, menjaga anda dan rakan -rakan anda selari.

Sekiranya anda membuka package.json , anda tidak akan melihat banyak, tetapi ia patut dilihat dan melihat apa yang berlaku:

 {
  "Ketergantungan": {
    "Sass": "^1.43.4"
  }
}

Anda mungkin tidak melihat nombor versi yang tepat (kerana pakej telah dikemas kini sejak artikel ini ditulis), tetapi anda harus melihat Sass di dalam objek dependencies JSON. Nombor itu sendiri (dalam kes ini 1.43.4) menunjukkan versi tertentu SASS yang telah dipasang.

Sebagai nota sampingan yang singkat tetapi penting: off-character (^) pada permulaan nombor versi membolehkan NPM memasang kemas kini kecil ke pakej. Dalam erti kata lain, ia memberitahu NPM bahawa pakej SASS yang dipasang mestilah sekurang -kurangnya versi 1.43.4, tetapi boleh menjadi versi yang lebih tinggi 1.xx selagi ia masih di bawah 2.0.0. NPM biasanya memilih versi stabil terkini apabila memasang pakej, tetapi ini ditambah untuk membolehkan kemas kini yang tidak merosakkan. Bahagian ini dipanggil "versi semantik", yang merupakan topik pos blog, tetapi tidak unik untuk NPM.

Bagaimanapun, ini adalah dua fail JSON ini. Seterusnya mari kita bincangkan folder node_modules .

node_modules

node_modules adalah di mana semua kod pakej sebenar terletak ; Jika anda kini membuka folder semasa mengikuti arahan, anda akan menemui folder SASS, tetapi akan ada beberapa folder lain juga.

Alasan folder lain ialah apabila pakej dipasang, ia mungkin memerlukan pakej lain berfungsi dengan baik (SASS jelas memerlukan). Oleh itu, NPM secara automatik melengkapkan kerja mencari dan memasang semua kebergantungan ini. Seperti yang anda fikirkan, kebergantungan ini juga mungkin mempunyai kebergantungan yang lain sendiri, jadi prosesnya akan diulangi dan sebagainya sehingga kita selesai merangkak pokok pergantungan ke cawangannya yang paling jauh dan semua yang kita perlukan dipasang (atau sehingga kita mendapat beberapa kesilapan, walaupun diharapkan tidak).

Oleh itu, projek biasanya mempunyai beratus -ratus atau lebih subfolder node_modules yang terkumpul dengan cepat dari segi ruang cakera. node_modules biasanya menjadi sangat besar.

Jika anda ingin tahu bagaimana untuk menghantar folder besar seperti node_modules ke repositori projek, perhatikan bahawa tidak seperti fail JSON, folder node_modules tidak boleh komited untuk Git , dan tidak boleh dikongsi. Sebenarnya, contoh hampir setiap fail .gitignore (yang fail yang memberitahu Git yang mana yang harus dilangkau apabila mengesan fail) mengandungi node_modules untuk memastikan bahawa git tidak pernah menyentuh atau menjejakinya.

Jadi, bagaimana orang lain dalam pasukan anda mendapatkan pakej ini? Mereka menjalankan npm install (atau disingkat sebagai npm i ) dari baris arahan untuk memuat turun kebergantungan secara langsung dari sumber. Dengan cara ini, tidak perlu melakukan sejumlah besar data untuk atau mengekstrak dari repositori asal.

Penjagaan harus diambil semasa memasang kebergantungan

Rangkaian kebergantungan yang besar dan kebergantungan relatif jauh ini boleh menyebabkan keadaan ini: beberapa jenis perpustakaan utiliti yang menyediakan perkhidmatan yang berguna boleh diterima pakai oleh banyak pakej lain, yang seterusnya akan digunakan oleh banyak pakej lain sehingga kod asal akhirnya dipasang secara senyap -senyap di sebahagian besar tapak dan aplikasi.

Anda sebenarnya boleh membiarkan banyak perkara lain semasa pemasangan pakej, yang mungkin terdengar pelik (jika tidak sangat menakutkan). Rasanya seperti menjemput rakan baru ke pesta keluarga anda dan rakannya muncul dengan 20 tetamu yang tidak diundang. Tetapi ini tidak begitu pelik atau menakutkan atas sebab -sebab berikut:

  1. Kebanyakan pakej NPM adalah sumber terbuka. Anda dan orang lain dapat dengan mudah melihat bagaimana kerja dalaman dan mengetahui dengan tepat apa yang dilakukan oleh pakej itu. Anda juga boleh melihat pakej pada pendaftaran (npmjs.com) untuk melihat berapa kali ia dipasang, apabila ia terakhir dikemas kini, dan maklumat lain yang berkaitan. Sekiranya pakej agak popular, anda boleh memastikan bahawa ia adalah selamat.
  2. Terdapat ciri -ciri besar yang diperlukan oleh banyak projek. Sebagai contoh, pertimbangkan pemformatan tarikh, memproses permintaan dan respons HTTP, pendikit, anti-goncang, atau animasi. Ia tidak masuk akal untuk mencipta semula roda dan menyandarkannya secara manual setiap kali anda menggunakannya dalam projek baru.
  3. Memasang pakej tidak berbeza daripada memasang aplikasi di telefon anda atau memasang pemalam di laman web WordPress . Perbezaannya ialah kita tidak mempunyai keupayaan untuk mendapatkan pemahaman yang lebih mendalam tentang bagaimana aplikasi dan plugin ini berfungsi secara dalaman, ketika kami mengendalikan pakej, dan perkara -perkara lain yang aplikasi dan plugin ini bergantung. Terdapat peluang yang baik bahawa mereka akan memperkenalkan banyak pakej yang lebih kecil dalam beberapa cara juga.

Sudah tentu, dalam mana -mana persekitaran di mana kod sewenang -wenangnya boleh dipasang dan dilaksanakan, adalah idea yang baik untuk berhati -hati. Tolong jangan salahkan saya. Saya akan berbohong jika saya berkata orang jahat tidak pernah berjaya mengeksploitasi sistem ini. Tetapi ketahui bahawa terdapat banyak proses yang dapat menghalang sesuatu daripada salah. Jika ragu -ragu, berpegang pada beg yang paling popular sehingga anda OK.

Juga ambil perhatian bahawa NPM akan menjalankan audit keselamatan automatik untuk anda, yang membawa kami ke titik terakhir dalam bahagian ini.

Apakah Audit NPM?

Apabila kami memasang SASS sebelum ini, kami melihat mesej berikut apabila terminal selesai:

 <code>found 0 vulnerabilities</code>

Walau bagaimanapun, anda mungkin melihat beberapa amaran - seperti projek lama saya di bawah. Saya memutuskan untuk memulakannya dan menjalankan npm install ( npm i ) selepas ia terbiar sekurang -kurangnya beberapa tahun. Mari lihat bagaimana ia berfungsi:

Audit NPM menunjukkan pakej dengan kelemahan yang diketahui , dan audit akan dijalankan secara automatik apabila anda memasang pakej. Jika anda melihat berita seperti ini, jangan risau terlalu banyak ; (Sebagai contoh, mungkin hanya satu kaedah dalam pakej yang akan menjadikannya terdedah apabila digunakan dengan cara tertentu.)

Walau bagaimanapun, adalah lebih baik untuk menyelesaikan masalah yang dapat kita selesaikan, iaitu perintah npm audit fix . Menambah fix pada akhirnya akan memberitahu NPM untuk meneruskan dan mengemas kini versi kecil baru dari mana -mana pakej dengan beberapa kelemahan yang diketahui. Bahagian "Versi Minor" adalah penting; Ini bermakna kemas kini harus dijalankan dengan selamat dengan cara ini tanpa risiko melanggar projek.

Jika menaikkan nombor versi pakej dengan nombor versi kecil tidak berfungsi, anda boleh menambah bendera --force ke arahan asal:

 Pembetulan Audit NPM -Kuasa

Walau bagaimanapun, ini adalah operasi yang berbahaya. Memberi kebenaran NPM "menggunakan kuasa" bermakna ia kini boleh memasang kemas kini versi utama untuk menyelesaikan kelemahan - bermakna ia boleh membuat perubahan yang ketara atau memperkenalkan ketidakserasian. Saya tidak mengesyorkan ini melainkan jika terdapat kelemahan kritikal yang tidak dapat diselesaikan npm audit fix dan anda sanggup dan dapat menghabiskan banyak masalah untuk menyelesaikan masalah selepas itu (jika perlu).

Nota akhir mengenai topik ini: Kadang -kadang anda boleh menyelesaikan beberapa masalah yang tidak dijangka dalam projek NPM anda dengan mengeluarkan node_modules dan npm install Rerunning. Ini adalah kaedah "suis berulang" NPM, dan saya telah melakukannya banyak kali sendiri.

Langkah seterusnya

Sekarang kita telah meneroka lubang kelinci yang berfungsi di belakang npm, mari kita kembali ke operasi sebenar, okey?

← Bab 6 Bab 8 →

Atas ialah kandungan terperinci Cara Memasang Pakej NPM. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn