Ana içeriğe atla
Version: Gelecek

Motivasyon

Daha az disk tüketimi ve aşırı hızlı kurulum

Varsayalım abc adında bir kütüphaneyi (dependency), 100 adet projende kullanıyorsun. Yarn ve npm kullanırken, abc adındaki kütüphane, 100 adet projende tek tek klonlanarak yüklendiğinden, disk tüketimini x100 defa arttırarak depolamış olursun. Pnpm iseabc kütüphanesini ortak bir alanda depolar ve:

  1. Eğer, abc kütüphanesinin birden fazla sürümünün kullanılması gerekiyorsa, ortak alanda sadece farklı olan dosyalar depolanır ve fazla yer tüketimine müsade etmez. Örneğin, abc kütüphanesinde 100 adet dosya yüklenmiş ise ve gelecekte yayınlanacak olan yeni sürümde 1 adet dosyada değişiklik olmuşsa; pnpm update komutu, yeni sürüm için 100 adet dosyayı yeniden indirmek/yüklemek yerine sadece değiştirilmiş olan o 1 dosyayı çekerek güncellemeyi uygular.
  2. Bütün dosyalar, disk üzerinde sadece bir yerde depolanır. Bu durumda abc kütüphanesini farklı bir projeye dahil etmek istediğin zaman, hâli hazırda ortak alanda depolanan dosyalara, hard-link (sembolik bağ) oluşturularak, ekstra disk tüketiminden tasarruf edilmiş olur. Böylece bir paketin aynı sürümünü, projelerin arasında paylaştırma imkanı elde etmiş olursun.

Sonuç olarak, projelerinde kullandığın kütüphanelerin sayısına orantılı olarak disk tüketiminde ve yükleme hızında, müthiş bir seviyede kazanç sağlamış olursun!

Düz, klasik, "hepsi bir arada" node_modules dizin yapısından kurtulma

npm veya Yarn Classic ile bağımlılıkları kurarken, tüm paketler modül dizininin köküne çekilir. Haliyle sonuç olarak, projeye kesin olarak dahil etmediğimiz yan kütüphanelere, kaynak koduz erişim sağlayabilir.

By default, pnpm uses symlinks to add only the direct dependencies of the project into the root of the modules directory. Pnpm'in, benzersiz node_modules klasör yapısı ve bu yapının Node.js ekosistemi ile nasıl ve neden uyumlu biçimde çalıştığı hakkında daha fazla bilgi almak istersen eğer:

tip

If your tooling doesn't work well with symlinks, you may still use pnpm and set the node-linker setting to hoisted. This will instruct pnpm to create a node_modules directory that is similar to those created by npm and Yarn Classic.