pnpm

Gue pengguna setia Yarn, dependency manager yang dibuat oleh tim Facebook. Selain karena cepat, juga karena bisa bekerja secara offline. Dan juga sangat produktif, bayangkan bila harus mengeksekusi scripts dev di package.json dengan: npm run dev daripada yarn dev

Beberapa fitur yang ditawarkan oleh Yarn, antara lain adalah:

Karena cepat & bisa offline, pasti nya si Yarn ini menyimpan cache di local kita. Untuk melihat cache di yarn, bisa eksekusi yarn cache list. Untuk melihat dimana yarn menyimpan file cache tersebut, bisa eksekusi yarn cache dir.

Di gue, berada di ~/Library/Caches/Yarn/v2. Mari kita lihat ada berapa "module" yang di cache di local gue:

omaygat 3873 modules! Mari kita lihat berapa space yang dihabiskan.

1.4GB :(

Dengan offline-feature yang ditawarkan, bisa diasumsikan bahwa di project kita, si yarn akan 'meng-copy' dari local cache kita menggunakan algoritma nya, dan mem-paste nya ke project kita!

Artinya, jika kita memiliki 4 project, misal masing-masing menggunakan react, react-dom, dan next, maka 3 dependensi tersebut akan di copy dari local cache kita, ke target project directory kita. Not a big deals.

Nah man, keren nya pnpm ini, daripada nge-copy dari cache ke project directory kita, dia malah membuat symlink ke local cache kita tersebut. Yang artinya, jika kita memiliki 4 project yang menggunakan react, react-dom, dan next; Maka, di setiap project tersebut, akan meng-symlink ke local cache (atau local registry kali, ya?) kita. Bukan meng-copy nya. Symlink kurang lebih seperti "membuat shortcut" bila di Windows.

Let me show you.

Dari video diatas, gue membandingkan penggunaan menggunakan pnpm & yarn. Perbedaan-perbedaan yang didapat adalah:

  1. Di directory node_modules, yarn meng-install juga dependensi-dependensi yang digunakan oleh dependensi yang kita install
  2. Di pnpm, hanya dependensi yang benar-benar kita install saja
  3. Dalam instalasi dependensi, yarn menghabiskan waktu 21 detik
  4. Pnpm menghabiskan waktu selama 24 detik
  5. Ukuran node_modules di project yang menggunakan yarn sebesar 75mb.
  6. Di pnpm, hanya 69mb. Itupun symlink

Gue pun sedang bersih-bersih di laptop gue, dari brew, docker images, sampai ke node global modules. Rencana nya, semua project gue di local, akan menggunakan pnpm. Harusnya enggak bermasalah, semoga saja haha.

Pnpm ini bekerja normal seperti npm & yarn, jadi harusnya sudah familiar (alias npm="pnpm") juga boleh. Ada juga beberapa fitur lain yang ditawarkan oleh pnpm, tapi gue cuma butuh fitur-fitur basic aja, jadi, males gue pelajari (seperti Yarn Workspace yang sampai hari ini enggak gue pelajari, karena lebih familiar dengan Lerna).

Pnpm ini menarik banget, tujuan utama gue sih untuk bisa menghemat penggunaan disk. Untuk melihat-lihat tentang pnpm, bisa akses disini. Untuk melihat komparasi antara npm, yarn, dan pnpm, bisa cek link berikut:

Keren nya, Microsoft mengadopsi pnpm (di project Rush nya). Dan digunakan untuk produk: OneDrive, SharePoint, Office 365 Small Business, Windows Store, Office Web Apps, Simplr JS react-forms, dan Office UI Fabric.


Tulisan ini tidak dipublish di Medium karena: yaa suka-suka gue doong. Mangkanya punya Blog, biar bebas.

Show Comments

Get the latest posts delivered right to your inbox.