Artikel ini akan membawa Anda melalui dua manajer paket Node.js yang hebat: npm dan benang. Saya harap ini dapat membantu Anda!

Kursus pengenalan singkat Node.js: masuk untuk belajar
Langkah pertama untuk mempelajari Node adalah memahami manajer paket node : npm . Saya yakin semua orang sudah familiar dengan npm , karena kita sering menggunakannya untuk mengunduh beberapa sumber daya paket.
Namun karena pustaka sumber daya npm (https://www.npmjs.com/) berada di luar negeri, kecepatan pengunduhan sumber daya yang menggunakannya relatif lambat, sehingga node包管理器pihak ketiga seperti yarn dan domestik disinkronkan dengan npm gudang. Cermin Taobao yang diperbarui (cnpm)
Selanjutnya kita akan mempelajari konten tersebut secara mendalam, mari kita mulai!
Kolom seri Node sudah mulai diperbarui. Ikuti blogger, berlangganan kolom, dan pelajari Node tanpa tersesat!
apa itu npm
Sebelum menggunakan npm , Anda harus memahami terlebih dahulu apa itu npm . Pada artikel pertama kolom seri Node [Node.js |. Satu-satunya cara dari front-end ke full stack] disebutkan npm adalah gudang sumber terbuka Node dan merupakan gudang open source terbesar di dunia
Alamat gudang ini adalah: https://www.npmjs.com/
Pada 17 Maret 2020, npm menyajikan 1,3 juta paket kepada sekitar 12 juta pengembang, yang mengunduhnya 75 miliar kali per bulan
Untuk mengunduh dan menggunakan sumber daya di gudang npm , Anda dapat menggunakan npm的指令(dimulai dengan npm , seperti npm i axios download axios ) atau menggunakan instruksi pihak ketiga lainnya ( Node包管理器pihak ketiga), seperti benang, dll. .
Pernyataan resmi:
npmadalah alat manajemen dan distribusi paket untukNodeJSManajemen paket tercermin dalam kenyataan bahwa ini adalah gudang
NodeJS, yang menyimpan dan mengelola berbagai paket perangkat lunakNodeJS.Alat distribusi diwujudkan dalam penggunaan
npm的指令untuk mengunduh paket di gudangnpm.
Saat kita mengkonfigurasi lingkungan NodeJS , npm指令模块diinstal bersama dengan NodeJS . Kita dapat menjalankan npm -v melalui terminal untuk melihat versi yang diinstal:

Namun jika versi npm yang diinstal secara default terlalu lama, Anda juga dapat menginstal dan memperbarui npm sendiri secara manual :
npm dan npm@terbaru -g
@latestmewakili instalasi versi terbaru,-gmewakili instalasi global, instruksinpmini akan dibahas nanti.
Hal ajaib dapat ditemukan di atas. Kami menginstal npm melalui npm . Bisakah kami menginstalnya sendiri?
Ini sebenarnya mudah dimengerti. npm的指令模块juga disimpan npm gudang npm sebagai sebuah paket, dan nama paket ini adalah npm .

Jadi yang biasa kita sebut npm hanya mengacu pada modul perintah npm (paket bernama npm)
Namun kenyataannya, kata
npmmengacu padanpm指令模块, dan juga mengacu padanpmgudang open sourceNodeJSitu sendiri, jadi kita mendownloadnpmdinpm(npm ini mewakili gudang open source NodeJS) (npm ini mewakili open source gudang sumber bernama npm Paket ini, paket ini adalah modul perintah npm)
npm perintah umum
Ada banyak instruksi
npm. Di sini kami hanya mencantumkan yang umum digunakan. Untuk informasi lebih lanjut, silakan lihat dokumentasi resmi npm.
: menghasilkan
npm initpackage.json
npm install : Unduh semua sumber daya yang dicatat di package.json
npm install 包名: Unduh paket yang ditentukan ke direktori saat ini
npm uninstall 包名: menghapus instalasi paket tertentu di direktori saat ini
npm update 包名: Perbarui paket yang ditentukan di direktori saat ini. Jika tidak ada nama paket yang ditambahkan, semua paket di direktori saat ini akan diperbarui.
npm outdated 包名: Periksa apakah paket yang ditentukan di direktori saat ini sudah usang . Jika tidak ada nama paket yang ditambahkan, semua paket di direktori saat ini akan diperiksa.
npm info 包名: Dapatkan informasi detail tentang paket di direktori saat ini
npm list : Melihat semua paket yang diinstal di direktori saat ini dan dependensinya serta menampilkan nomor versi ( list dapat disingkat ls )
npm list 包名: Melihat nomor versi paket tertentu yang diinstal di direktori saat ini ( list dapat disingkat ls )
Beberapa poin tambahan:
install bisa disingkat i , seperti: npm install axios bisa disingkat npm i axios
uninstall bisa disingkat un
Tambahkan simbol @ setelah nama paket untuk menentukan versi paket, seperti: npm i md5@1 mengunduh md5 versi 1, npm i md5@latest berarti mengunduh md5 versi terbaru
akhiran perintah npm
-g : Tentukan lingkungan global
Perintah
npmsecara default beroperasi di direktori saat ini. Menambahkan-gmenentukan pengoperasian di lingkungan global , seperti disebutkan di atas, instal versi terbaru npm secara global:npm i npm@latest -g. .
--save dapat disingkat -s : menentukan dependensi di lingkungan produksi (dicatat dalam dependencies )
Setelah versi
npm5, defaultnya adalah--save. Misalnya, axios perlu diinstal di lingkungan produksi dan lingkungan pengembangan:npm i axios -s
--save-dev dapat disingkat -D : menentukan dependensi di lingkungan pengembangan (dicatat di devDependencies )
Untuk menginstal babel yang tidak diperlukan di lingkungan produksi (hanya digunakan di lingkungan pengembangan):
npm i babel -D
--save-prod dapat disingkat -P : sama dengan --save
--save-optional dapat disingkat -O : menentukan dependensi opsional (dicatat dalam optionalDependencies )
--no-save : tidak akan dicatat di package.json
Untuk fungsi spesifik dan perbedaan
-g,--save,--save-devsilakan lihat artikel saya: Perbedaan antara npm install -g/–save/–save-dev
Akhiran perintah npm juga dapat ditempatkan di depan nama paket:
npm i -g npm@latest
Manajemen paket ketergantungan
Di npm , dependensi yang terkenal adalah: dependencies dan devDependencies
Selain itu, sebenarnya mencakup:
peerDependencies ,
optionalDependencies
bundledDependencies / bundleDependencies
Beberapa dependensi, termasuk ini, dicatat di package.json :

Di atas kami telah menyebutkan dependensi ini ketika berbicara tentang sufiks perintah npm . Berikut adalah penjelasan rinci tentang apa yang diwakilinya:
dependencies dan devDependencies
Lihat artikel saya yang lain: Perbedaan antara npm install -g/–save/–save-dev
peerDependencies
Anda dapat membaca artikel dari orang besar: Memahami Ketergantungan Sejawat dalam satu artikel
optionalDependencies
Dependensi opsional. Jika ada beberapa paket dependen yang masih dapat berjalan meskipun instalasi gagal atau Anda ingin npm terus berjalan, Anda dapat menggunakan
optionalDependenciesSelain itu,optionalDependenciesakan menimpa dependensi dengan nama yang sama didependencies, jadi jangan tuliskan di kedua tempat.
bundledDependencies / bundleDependencies
Ketergantungan pengemasan,
bundledDependenciesadalah objek array yang berisi nama paket dependen. Saat diterbitkan, paket-paket dalam objek ini akan dikemas ke dalam paket rilis final. Paket-paket dalam array harus dideklarasikan terlebih dahulu dalamdevDependenciesataudependencies, jika tidak, pengemasan akan melaporkan kesalahan.
Masalah versi paket yang perlu diperhatikan di package.json
Informasi versi semua paket yang diunduh melalui npm akan dicatat di package.json
Saat menjalankan npm i itu akan diunduh berdasarkan informasi paket yang tercatat di package.json . Aturan pengunduhannya adalah sebagai berikut:
Ketika versi paket dimulai dengan ^ (default) , versi besar akan dikunci
// paket.json
"ketergantungan": {
"md5": "^2.1.0" // } dimulai dengan ^,Melalui
npm iversi terbarumd52.xx(versi terbaru di bawah dua versi utama) akan diinstal, yang belum tentu 2.1.0, tetapi mungkin juga 2.3.0
Ketika versi paket dimulai dengan ~ , maka akan dikunci ke versi utama kedua
// paket.json
"ketergantungan": {
"md5": "~2.1.0"
},Melalui
npm iakan menginstal versi terbarumd52.1.x(versi terbaru di bawah versi 2.1), yang belum tentu 2.1.0, tetapi bisa juga 2.1.1
Versi paketnya adalah * dan akan dikunci ke versi terbaru
// paket.json
"ketergantungan": {
"md5": "*"
},Melalui
npm iakan menginstalmd5versi terbaru
Jika tidak ada awalan sebelum paket version , maka akan dikunci ke versi yang ditentukan.
// paket.json
"ketergantungan": {
"md5": "2.1.0"
},Melalui
npm iakan menginstalmd5versi 2.1.0
Selesaikan masalah kecepatan npm yang lambat
Karena gudang npm berada di luar negeri, maka akan lebih lambat bagi kita untuk menggunakan perintah npm di China untuk mengunduh konten gudang asing ini.
Saat ini, kita dapat menjalankan perintah berikut untuk mengalihkan sumber gudang npm ke sumber gambar Taobao domestik (cnpm) :
npm config mengatur registri https://registry.npmmirror.com
Gunakan npm config get registry untuk melihat sumber saat ini:

Saat Anda menggunakan npm di masa mendatang, npm akan diunduh secara otomatis dari gudang mirror Taobao domestik, dan kecepatannya akan sangat cepat.
Alamat sumber mirror Taobao sebelumnya adalah http://registry.npm.taobao.org, tetapi sekarang telah diubah menjadi http://registry.npmmirror.com Lihat detailnya
Namun pasti akan sedikit merepotkan bagi kita untuk berpindah sumber dengan memodifikasi konfigurasi npm . Kita dapat menginstal nrm secara global untuk membantu kita berpindah sumber npm dengan cepat.
Gunakan nrm untuk mengganti sumber npm dengan cepat
Instal nrm secara global:
npm instal -g nrm
Jalankan nrm ls untuk melihat sumber npm yang dapat dialihkan :

Gunakan npm use untuk berpindah sumber , seperti beralih ke sumber Taobao: nrm use taobao

Gunakan nrm test 源名untuk menguji waktu respons sumber terkait:

Anda dapat melihat bahwa kecepatan respons sumber Taobao jauh lebih cepat daripada sumber default npm .
Cermin npm Cina: cnpm
cnpm adalah mirror npmjs.org lengkap , yang dapat digunakan sebagai pengganti versi resmi
Frekuensi sinkronisasi antara
cnpmdan versi resminya adalah setiap 10 menit sekali, situs resmi cnpm
Unduh cnpm :
npm instal -g cnpm --registry=https://registry.npmmirror.com
cnpm adalah cermin Taobao . Saat kita menggunakan sumber cermin Taobao di atas, kita cukup mengubah sumber npm ke sumber cermin Taobao ( cnpm ) (sumber ini sebenarnya mengacu pada alamat gudang), dan kemudian menggunakannya melalui perintah npm .
Dan berikut ini untuk langsung mendownload gambar cnpm secara lengkap, lalu Anda dapat menggunakan perintah cnpm sebagai ganti perintah npm :
cnpm installcnpm dan aksio -g // ....
Instruksi
cnpmsama persis dengannpm. Cukup gunakan cnpm daripada npm saat menggunakannya.
benang adalah alat manajemen ketergantungan yang dirilis oleh Facebook yang lebih cepat dan efisien daripada npm
Memasang:
npm install -g benang
Perbarui benang:
set benang versi terbaru versi set benang dari sumber
keuntungan
sangat cepat
yarn menyimpan cache setiap paket yang diunduh sehingga tidak perlu mengunduhnya lagi saat menggunakannya lagi. Juga memanfaatkan unduhan paralel untuk memaksimalkan pemanfaatan sumber daya, sehingga instalasi lebih cepat
Sangat aman <br/> Sebelum mengeksekusi kode, yarn akan memverifikasi integritas setiap paket instalasi melalui suatu algoritma
Instruksi umum benang

yarn init : Inisialisasi proyek dan buat file package.json . Langkah-langkah pembuatannya kira-kira sama dengan npm init
yarn help : menampilkan daftar perintah
yarn install : Unduh semua sumber daya yang tercatat di package.json , yang dapat disingkat menjadi yarn
yarn add 包名: unduh paket yang ditentukan ke direktori saat ini
yarn remove 包名: hapus instalan paket yang ditentukan di direktori saat ini
yarn upgrade 包名: Perbarui paket yang ditentukan di direktori saat ini Anda dapat menambahkan @指定版本号setelah nama paket untuk menentukan versi yang perlu diperbarui.
akhiran perintah yarn
--dev : Menentukan dependensi di lingkungan pengembangan ( devDependencies ), disingkat -D
--peer : Tentukan dependensi inti ( peerDependencies )
--optional : Tentukan dependensi opsional ( optionalDependencies )
Artikel ini memperkenalkan npm dan yarn , serta nrm , cnpm , dll. yang berasal dari npm
Blogger telah menggunakan kombinasi npm + nrm untuk berpindah sumber , karena hal ini tidak hanya menjamin kecepatan yang cepat, namun juga memungkinkan perpindahan sumber dengan mudah tanpa harus mengunduh paket tambahan seperti cnpm dan yarn
Baik npm maupun yarn memiliki banyak konten. Artikel ini hanya menjelaskan konten yang paling umum digunakan. Jika Anda ingin tahu lebih banyak, Anda dapat mengunjungi situs resmi terkait untuk melihatnya.