Berbagi teknologi

Manajer paket - perbandingan npm, benang, cnpm, pnpm

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. npm (manajemen paket node)

1.1 Instalasi lokal

Gunakan perintah: npm install nama paket atau npm i nama paket
Paket yang diinstal secara lokal muncul di direktori node_module di bawah direktori saat ini
Jika paket yang diinstal secara lokal memiliki CLI, npm akan menempatkan skrip CLI-nya di bawah node_modules/.bin dan menggunakan perintah npx untuk memanggilnya.

1.2 Instalasi global

Paket yang diinstal secara global ditempatkan di direktori global khusus.
Gunakan perintah npm install --global package name atau npm i -g package name.
Paket yang diinstal secara global tidak tersedia untuk semua proyek, paket ini hanya menyediakan alat CLI global. Dalam kebanyakan kasus, tidak perlu menginstal paket secara global.

1.3 Perintah instalasi

Tergantung pada lingkungan produksi
npm saya nama paket
npm i --simpan nama paket
npm i -S nama paket
Instal dependensi ke dalam lingkungan pengembangan
npm i --save-dev nama paket
npm i -D nama paket

1.4. Saat menggunakan nodejs untuk mengimpor modul, jika jalur modul tidak dimulai dengan ./ atau.../, node akan mengira bahwa modul yang diimpor berasal dari direktori node_modules.
1.5.skrip npm

Konfigurasikan perintah CLI yang umum digunakan di bidang skrip package.json dan gunakan nama skrip npm run untuk menjalankan skrip. npx dapat dihilangkan dalam skrip.

2. Masalah sebelumnya dengan npm:

  • Direktori ketergantungan sangat bertumpuk: Di masa lalu, ketergantungan npm bertumpuk, dan sistem Windows tidak dapat mendukung direktori yang terlalu dalam.
  • Kecepatan pengunduhan lambat: Karena level bersarang yang dalam, pengunduhan paket hanya dapat dilakukan secara serial; beberapa paket dengan versi yang sama diunduh berulang kali.
  • Output konsolnya rumit: mencetak banyak detail paket
  • Masalah transplantasi proyek: Dulu, hanya ada file konfigurasi package.json, tetapi tidak ada file package-lock.json.

3. Munculnya benang karena mempunyai keunggulan sebagai berikut :

  • Gunakan struktur direktori datar
  • unduhan paralel
  • Gunakan cache lokal
  • Sederhanakan informasi keluaran konsol dan hanya keluaran informasi penting
  • Gunakan file kunci benang untuk mencatat ketergantungan yang tepat

4. Dipengaruhi oleh benang, npm6 memanfaatkan konsep tingkat lanjut benang dan melakukan pengoptimalan berikut:

  • Perataan direktori
  • unduhan paralel
  • cache lokal
  • Gunakan package-lock.json untuk mencatat dependensi yang tepat
  • Menambahkan sejumlah besar alias perintah
  • Npx bawaan, Anda dapat memulai alat CLI lokal
  • Sangat menyederhanakan keluaran konsol

5. cnpm

server registri npm berada di luar negeri, yang dapat menyebabkan pengunduhan lambat atau gagal. Di masa lalu, npm tidak menyediakan fungsi memodifikasi registri, Taobao membangun registri sendiri, yaitu cermin npm Taobao. Taobao juga menyediakan alat CLI cnpm.

6. pnpm

  • Seperti npm dan benang, cache masih digunakan untuk menyimpan paket yang diinstal.Gunakan pnpm-lock.yaml untuk mencatat versi ketergantungan terperinci
  • Berbeda dari benang dan npm, pnpm menggunakan tautan simbolik dan tautan keras untuk menempatkan ketergantungan, menghindari penyalinan file, meningkatkan efisiensi instalasi, dan sangat mengurangi penggunaan ruang disk.
  • Karena penggunaan symbolic link dan hard link, pnpm dapat menghindari masalah jalur yang terlalu panjang pada sistem Windows, sehingga menggunakan ketergantungan pohon. Karena ketergantungan pohon, proyek hanya dapat menggunakan ketergantungan langsung, bukan ketergantungan tidak langsung.

7. Prinsip pnpm:

  • Inti dari sebuah file: File sebenarnya adalah sebuah pointer yang menunjuk ke alamat penyimpanan eksternal (hard disk, USB flash drive). Menghapus file sebenarnya menghapus penunjuk, jadi sangat cepat.
  • Salinan file: Salin konten yang ditunjuk oleh penunjuk file, lalu buat penunjuk baru yang menunjuk ke konten baru.
  • Tautan keras: Menyalin file Penunjuk A ke file lain Penunjuk B. File B adalah tautan keras ke file A.
  • Tautan simbolik (soft link): Buat tautan simbolik B untuk file atau folder A, lalu B menunjuk ke A.
  • Pintasan: Mirip dengan tautan simbolik, ini adalah metode tautan yang didukung oleh Windows pada masa-masa awal. Ini tidak hanya sebuah penunjuk, tetapi juga berisi berbagai informasi seperti izin, kompatibilitas, metode startup, dll. Pintasan bersifat unik untuk sistem Windows dan tidak digunakan di seluruh platform.

Perbedaan antara tautan simbolis dan tautan keras

  • Tautan keras hanya dapat menghubungkan file, sedangkan tautan simbolis dapat menghubungkan file dan direktori.
  • Setelah koneksi selesai, hard link hanya dikaitkan dengan konten file dan tidak ada hubungannya dengan link sebelumnya. Tautan simbolik selalu dikaitkan dengan file yang ditautkan sebelumnya dan tidak terkait langsung dengan file konten.