Pendahuluan
Yarn dan NPM adalah dua manajer paket Node.js yang paling populer. Mereka mengizinkan pengunduhan, penginstalan, dan pengelolaan paket saat mengembangkan dalam JavaScript.
Dalam tutorial ini, kita akan membandingkan Benang dan NPM, mempertimbangkan kinerjanya, kemudahan penggunaan, keamanan, dan fitur yang disediakannya.
Benang vs. NPM:Definisi
Benang (Negosiator Sumber Daya Lain) dan NPM (Pengelola Paket Node) adalah manajer paket yang digunakan untuk pengkodean JavaScript. Mereka bekerja dengan Node.js , yang berfungsi untuk membantu pengguna mengembangkan dan menjalankan kode JavaScript di luar browser web.
Node.js menggunakan sejumlah besar paket dan pustaka sumber terbuka untuk membuat pengkodean lebih mudah dan efisien. Manajer paket seperti Yarn dan NPM memungkinkan pengguna menginstal, mengelola, memperbarui, dan menghapus paket, pustaka, dan dependensi dengan mudah.
Apa itu Benang?
Facebook mengembangkan Yarn pada tahun 2016 sebagai pengganti NPM. Itu dirancang untuk menawarkan fitur yang lebih canggih yang tidak dimiliki NPM pada saat itu (seperti penguncian versi) dan menciptakan produk yang lebih aman, stabil, dan efisien.
Namun, sejak Yarn dirilis, NPM telah menambahkan beberapa fitur penting. Dalam kondisinya saat ini, Benang sekarang lebih merupakan alternatif untuk NPM daripada pengganti.
Apa itu NPM?
NPM adalah manajer paket default untuk Node.js dengan alat CLI yang membantu menginstal, mengelola, dan menghapus paket Node.js. Ini juga memungkinkan pengguna untuk berbagi paket Node.js open-source.
Benang vs. NPM:Perbandingan
Di bawah ini adalah garis besar beberapa persamaan dan perbedaan antara Benang dan NPM.
Pemasangan
Kami akan mulai dengan membandingkan proses instalasi untuk Benang dan NPM:
Benang
Untuk mulai menggunakan Yarn, Anda perlu menginstalnya menggunakan penginstal MSI dari situs web resmi atau pengelola paket seperti Chocolatey, Scoop CLI, atau NPM itu sendiri. Pelajari lebih lanjut di panduan kami untuk menginstal Yarn di Windows dan menginstal Yarn di Ubuntu 18.04.
NPM
NPM disertakan secara default dengan instalasi Node.js dan tidak memerlukan langkah tambahan untuk menginstal. Untuk mempelajari lebih lanjut tentang menginstal Node.js dan NPM, lihat salah satu panduan kami:
- Cara Menginstal Node.js &NPM di Ubuntu 18.04 dan 20.04
- Cara Menginstal Node.js dan NPM di CentOS 7
- Cara Memasang Node.js dan NPM di Windows
- Cara Memasang Node.js dan NPM di Mac
Ketergantungan
Benang
Yarn versi 1 dan NPM keduanya mengelola dependensi dengan cara yang sangat mirip. Keduanya menyimpan metadata proyek di package.json file, terletak di node_modules folder di dalam direktori proyek.
Mulai dari versi 2, Benang tidak lagi menggunakan node_modules folder untuk melacak dependensi. Sebagai gantinya, Benang 2.0 menggunakan Plug'n'Play fitur, yang menghasilkan satu .pnp.cjs mengajukan. File ini berisi peta hierarki ketergantungan untuk sebuah proyek.
Benang menggunakan yarn
perintah untuk menginstal dependensi. Ini menginstal dependensi secara paralel, memungkinkan Anda untuk menambahkan beberapa file secara bersamaan.
Menginstal dependensi secara otomatis membuat file kunci yang menyimpan daftar persis dependensi yang digunakan untuk proyek tersebut. Dengan Yarn, file ini disebut yarn.lock .
NPM
NPM menginstal dependensi menggunakan npm install
memerintah. Dependensi dipasang secara berurutan, satu demi satu.
NPM juga membuat file kunci versi bernama package-lock.json . Benang juga mendukung package-lock.json file, memungkinkan pengguna untuk memigrasikan data versi dari NPM ke Yarn.
Kecepatan dan Performa
Seperti disebutkan di atas, sementara NPM menginstal paket dependensi secara berurutan, Yarn menginstal secara paralel. Karena itu, Yarn bekerja lebih cepat daripada NPM saat menginstal file yang lebih besar.
Kedua alat juga menawarkan opsi untuk menyimpan file ketergantungan di cache offline. Hal ini memungkinkan pengguna untuk menginstal dependensi bahkan jika mereka sedang offline.
Selain itu, mulai dari versi 2, Yarn menggunakan Zero install fitur. Fitur ini mengambil peta ketergantungan dari .pnp.cjs file dan menggunakannya untuk melakukan instalasi ketergantungan offline dengan hampir nol penundaan.
Keamanan
Benang
Benang melakukan pemeriksaan keamanan sebagai proses latar belakang saat mengunduh paket. Ia menggunakan informasi lisensi paket untuk memastikannya tidak mengunduh skrip berbahaya atau menyebabkan konflik ketergantungan.
Kedua alat tersebut menggunakan protokol enkripsi untuk memastikan transfer data yang aman. Benang memverifikasi paket dengan checksum, sementara NPM menggunakan SHA-512 (Algoritma Aman Hash) yang disimpan di package-lock.json berkas.
NPM
Ancaman keamanan adalah masalah yang signifikan dalam versi awal NPM. Pada versi 6, NPM melakukan audit keamanan setiap kali Anda menginstal sebuah paket. Ini membantu mencegah kerentanan dan memastikan tidak ada ketergantungan yang saling bertentangan.
Anda juga dapat menjalankan audit manual dengan menggunakan npm audit
memerintah. Jika NPM menemukan kerentanan, gunakan npm audit fix
harus menyelesaikan masalah.
Kemudahan Penggunaan
Baik Yarn maupun NPM relatif mudah digunakan, terutama mengingat mereka berbagi beberapa perintah. Keluaran perintah umumnya mudah dibaca dan dipahami, meskipun dapat menjadi kurang dapat dibedakan secara visual saat menginstal sejumlah besar paket.
Kedua manajer paket menawarkan mode interaktif yang membantu pengguna menyiapkan proyek baru. Di Yarn, mode ini diaktifkan secara default, sedangkan NPM memerlukan npm-upgrade paket untuk mengaktifkan interaktivitas.
Fitur
Benang dan NPM memiliki beberapa kesamaan fitur utama:
- Membuat file kunci: Kedua manajer paket secara otomatis membuat file kunci versi. Dengan Yarn, file ini disebut yarn.lock , sementara NPM menamai file tersebut package-lock.json .
- Menggunakan ruang kerja: Baik Yarn maupun NPM mendukung ruang kerja, memungkinkan Anda menggunakan satu repositori untuk mengelola dependensi untuk beberapa proyek.
- Skrip jarak jauh: Baik NPM dan Yarn memungkinkan Anda menjalankan skrip dari jarak jauh, menggunakan
npx
perintah di NPM danyarn dlx
perintah di Benang.
Fitur eksklusif untuk Benang:
- Plug'n'Play: Alih-alih menggunakan node_modules folder, Benang menghasilkan satu .pnp.cjs file yang memetakan dependensi proyek. Hal ini memungkinkan pohon dependensi yang lebih optimal serta startup proyek dan instalasi paket yang lebih cepat.
- Pemasangan nol: Fitur ini terkait dengan Plug'n'Play , menggunakan .pnp.cjs file untuk memetakan paket yang disimpan dalam cache offline. Ini memungkinkan Anda untuk mengakses dan menginstal paket yang disimpan hampir tanpa penundaan.
- Pemeriksaan lisensi: Yarn memiliki fitur pemeriksa lisensi bawaan saat mengunduh dan menginstal paket.
Perintah
Tabel di bawah ini memberikan ikhtisar dari beberapa perintah yang paling sering digunakan untuk NPM dan Yarn:
Perintah | NPM | Benang |
---|---|---|
Inisialisasi proyek | npm init | yarn init |
Jalankan pengujian untuk paket saat ini | npm test | yarn test |
Periksa paket yang kedaluwarsa | npm outdated | yarn outdated |
Publikasikan paket | npm publish | yarn publish |
Jalankan skrip | npm run | yarn run |
Kelola cache paket lokal | npm cache clean | yarn cache clean |
Masuk atau keluar | npm login/logout | yarn login/logout |
Instal dependensi | npm install | yarn |
Instal paket | npm install [package name] | yarn add [package name] |
Copot pemasangan paket | npm uninstall [package name] | yarn remove [package name] |
Perbarui pengelola | npm update | yarn upgrade |
Perbarui paket | npm update [package name] | yarn upgrade [package name] |
Instal paket secara global | npm install --global [package name] | yarn global add [package name] |
Copot pemasangan paket secara global | npm uninstall --global [package name] | yarn global remove [package name] |
Pembaruan ketergantungan interaktif | npm run upgrade-interactive | yarn upgrade-interactive |
Jalankan paket dari jarak jauh | yarn dlx | |
Periksa lisensi | yarn licenses ls |
Benang vs. NPM:Cara Memilih
Sangat penting untuk mempertimbangkan keuntungan dan kerugian dari NPM dan Benang saat memutuskan mana yang akan digunakan.
Benang
Keuntungan
- Mendukung penginstalan paralel dan penginstalan Nol, keduanya meningkatkan performa secara dramatis.
- Versi Benang yang lebih baru menawarkan bentuk penguncian versi yang lebih aman.
- Komunitas pengguna aktif.
Kerugian
- Benang tidak berfungsi dengan versi Node.js yang lebih lama dari versi 5.
- Benang menunjukkan masalah saat mencoba memasang modul asli.
NPM
Keuntungan
- Mudah digunakan, terutama bagi pengembang yang terbiasa dengan alur kerja versi lama.
- Penginstalan paket lokal dioptimalkan untuk menghemat ruang hard drive.
- UI yang sederhana membantu mengurangi waktu pengembangan.
Kerugian
- Pendaftaran NPM online dapat menjadi tidak dapat diandalkan jika terjadi masalah kinerja. Ini juga berarti bahwa NPM memerlukan akses jaringan untuk menginstal paket dari registri.
- Meskipun ada serangkaian peningkatan di berbagai versi, masih ada kerentanan keamanan saat menginstal paket.
- Keluaran perintah mungkin sulit dibaca.
Putusan
Mempertimbangkan semua hal di atas, NPM lebih baik untuk pengembang yang terbiasa dan puas dengan alur kerjanya saat ini. Ini memberikan pengalaman pengguna yang cukup efisien sekaligus menghemat ruang hard drive.
Di sisi lain, Yarn menawarkan fitur yang lebih canggih, seperti pemasangan Plug'n'Play dan Zero. Ini juga memberikan kinerja dan keamanan yang sedikit lebih baik tetapi dengan mengorbankan ruang hard drive.