Skip to main content
Version: 6.x

Motiváció

Lemezhely megtakarítása és a telepítési sebesség növelése#

npm vagy Yarn használatakor, ha egy csomag 100 projektnek a függősége, akkor annak a csomagnak 100 példánya lesz a lemezre írva. A pnpm használatával a függőség egy tartalommal címezett tárolóban lesz tárolva, ezért:

  1. Ha a függőség különböző verzióitól függ, csak az eltérő fájlok kerülnek a tárolóba. Például, ha 100 fájlja van, és egy új verzióban csak az egyik fájl különbözik, akkor egy pnpm update csak egy új fájlt ad hozzá a tárolóba ahelyett, hogy a teljes függőséget másolja egyetlen változás miatt.
  2. Az összes fájl egyetlen helyre kerül a lemezen. Amikor a csomagok telepítésre kerülnek, fájljaikat az adott helyről hardlinkelve vannak, ezért nem igényelnek több helyett a lemezen. Ez lehetővé teszi, hogy az azonos verziójú függőségeket megosszák maguk közott a különböző projektek a lemezen.

Ennek eredményeként rengeteg helyet takarít meg a lemezén a projekt és függőség számával arányosan, és sokkal gyorsabban települnek a függőségek!

Nem lapos node_modules létrehozása#

Amikor npm-el telepíti a függőségeket, az összes csomag a modulok mappájának gyökérbe kerül. Ennek eredményeként a forráskód hozzáférhet olyan függőségekhez, amelyek nincsenek hozzáadva függőségként a projekthez.

A pnpm symlinkeket használ, hogy csak a projekt közvetlen függőségeit rakja a modulmappa gyökerébe. If you'd like more details about the unique node_modules structure that pnpm creates and why it works fine with the Node.js ecosystem, read: