JavaScript csomag vezetők képest: fonal, npm, vagy pnpm?

a modern alkalmazásfejlesztésben nem írunk mindent a semmiből. Ehelyett inkább a meglévő nyílt forráskódú csomagokat használjuk. Mindegyik csomagnak megvan a saját karbantartója és közössége. Tehát egy csomag használata a projektjeinkben olyan előnyökkel jár, mint a gyorsabb fejlesztés, az új, rendszeres frissítésekhez való hozzáférés, valamint a jobb biztonság, mint az egyedi szkript.

gyakori, hogy egy csomag sok más csomagtól függ, hogy megfelelően működjön. Hasonlóképpen, a többi csomag lodash-hoz hasonló függhet, de maga a lodash több csomagtól is függ. Más szavakkal, a beágyazott függőségek néha annyira összetettekké válhatnak, hogy nem képesek manuálisan kezelni a függőségkezelést.

itt van, amikor egy csomagkezelő rendkívül hasznos. A csomagkezelők olyan eszközök, amelyek automatikusan kezelik a projekt függőségeit.

például egy csomagkezelő egyetlen paranccsal telepíthet új — vagy frissítheti a meglévő-csomagokat. Mert minden automatizált, így nincs esély az emberi hibára. JavaScript fejlesztőként több csomagkezelőhöz is hozzáférhetünk. De ebben az útmutatóban, hasonlítsuk össze a három legnépszerűbb is:

  • npm
  • Fonal
  • pnpm

Áttekintés csomag vezetők

npm volt az első csomagkezelő, hogy bemutassam a fogalom a registry jegyzőkönyv csomagolási előírások. 2010-ben jelent meg, és hivatalosan is elfogadta a Node.js csapat nem sokkal később, ami volt a fordulópont az npm.

a Node hatalmas sikere után.js, npm is kapott tapadást a fejlesztő közösség. Kínál egy online registry JavaScript csomagok, valamint egy parancssori eszköz, amely működik a rendszerleíró adatbázis telepíteni és frissíteni függőségek.

de kevés hátránya van az npm-nek, ami kiváltotta a fonal és a pnpm fejlődését. Például az npm lényegesen lassabb, mint a társaik. Ez is egy története komoly biztonsági réseket.

tehát az olyan nagy tech cégek, mint a Facebook és a Google, vonakodtak attól, hogy továbbra is használják az npm-t. Ezzel együtt csatlakoztak az npm jobb verziójának kidolgozásához és fonalnak nevezték. Közben, ukrán fejlesztő Zoltán Kochan kifejlesztett pnpm.

jellemzői npm, fonal, és pnpm

ezek a csomagkezelők nyílt forráskódú, ami azt jelenti, hogy teljes hozzáférést, hogy ellenőrizze a belső működését mindegyik. Néha ez még a vállalati szintű alkalmazásfejlesztés követelménye is.

az npm előnyei:

  1. automatikusan létrehoz egy fájlt. Ez hasznos, hogy kötelezzék el magukat a verzió vezérlő rendszer. Így, más fejlesztők is könnyen telepíthető a függőségek a helyi gépek
  2. Kezelése helyi vagy globális függőségek könnyedén
  3. npm jól felszerelt kezelni több változata is függőségek
  4. Ez egy hivatalos jegyzék, amely több csomagból, mint pypi, rubygems, vagy packagist

Előnyei Fonal:

  1. Fonal javítások sok kérdés, hogy úgy tűnik, egy Monorepo. Például, ha fenntartása több csomagot is alá ugyanaz adattár mind külön package.json fájlt, akkor a frissítés az összes csomagot, könnyen a Fonalat, köszönhetően a koncepció a munkaterületek, hogy lehet telepíteni a függőségek mind a csomagok egy tároló, egy mozdulattal. Az npm használatával a npm install parancsot manuálisan kell futtatnia az egyes csomagmappákban.
  2. a fonal offline gyorsítótár-mechanizmust használ, ami azt jelenti, hogy amikor először telepít egy csomagot, a fonal hozzáadja a gyorsítótár mappához a ~/.yarn-cachealatt. Tehát a következő alkalommal, amikor szüksége van erre a csomagra, a fonal a helyi gyorsítótárból fogja letölteni, ahelyett, hogy HTTP kérést adna a kiszolgálónak. Ez a kis bővítés jelentősen növeli a fonalak teljesítményét az npm
  3. fonalhoz képest, a yarn.lock nevű zárfájlt is használja, így a projektek minden csapattag számára megfelelően működnek. Ezt a koncepciót determinisztikus telepítési algoritmusnak is nevezik
  4. ez egy beépített licenc-ellenőrzővel van ellátva, amely különböző forgatókönyvekben hasznos lehet az alkalmazások fejlesztésekor
  5. az npm-től eltérően a fonal a párhuzamos Letöltések nevű megközelítést használja. Ez lehetővé teszi a fonal számára, hogy több erőforrást használjon a
  6. építési folyamat felgyorsításához, hiba esetén automatikusan újrapróbálhatja a HTTP kérést. Ez a funkció különösen akkor hasznos, ha ideiglenes internetes problémákkal szembesül

A pnpm előnyei:

  1. kompatibilis az npm-mel, de lényegesen jobb lemezterület-használatot és sebességet is kínál
  2. a pnpm egyetlen helyre telepíti az összes csomagot, majd szimbolikus linkeket használ a hivatkozáshoz. Egy teljesen új koncepciót vezet be, amelyet tartalomcímezhető tárolórendszernek neveznek, amely lehetővé teszi a pnpm számára a fájlok közötti különbség észlelését. Viszont nem másolja a változatlan fájlokat a csomag két különböző verziójában:
  3. legújabb verziója, 5.8.0, bevezet egy új fonal-bash-szerű beállítás úgynevezett shell-emulátor, egy cross-platform shell környezet
  4. pnpm van egy szigorú hozzáférés-ellenőrzési mechanizmus, ami azt jelenti, hogy egy csomag csak hozzáférni a függőségek, amelyek meghatározott package.json fájl

csomagkezelő összehasonlítás

könnyű használat

npm, fonal, és pnpm kínálnak szinte azonos parancsokat a saját különböző műveletek, amelyek mindegyike könnyen használható. Íme egy példa az általánosan használt parancsokra:

NPM pnpm
npm install pnpm install
npm update pnpm update

speed

ezeknek a csomagkezelőknek a sebessége és teljesítménye nem egyezik meg a pnpm-Mel. A különböző felhasználási esetek referenciamutatója szerint a pnpm teljesítménye legfeljebb 3x gyorsabb, mint az npm.

a fonal és az npm sebessége összehasonlítható. Bizonyos esetekben a fonalnak jelentős előnye van az npm-vel szemben, de vannak olyan forgatókönyvek, ahol az npm megfelelőbb választás. Ha például egy telepítési műveletet csak a node_modules és skip cache és lock file funkcionalitással hajtunk végre, akkor az npm 5x jobb sebességet kínálhat. Hasonlóképpen, ha mind a három funkciót használjuk, akkor a fonal növelheti teljesítményét, és 11-szer gyorsabb lesz, mint az npm.

biztonság

a fonal fő előnye az npm-vel szemben az, hogy ellenőrzi az egyes csomagok integritását. Az ellenőrzési folyamat a csomag bármely kódjának végrehajtása előtt történik,így elhárítja a csomag eltérítésének sérülékenységét.

másrészről, az npm egy kicsit megbocsátóbb, amikor rossz csomagokkal dolgozik. Még mindig fejlődik annak érdekében, hogy a legjobb biztonsági gyakorlatokat kínálja. De az npm általában rossz hírnévvel rendelkezik a biztonság szempontjából.

a múltban volt néhány biztonsági rés az npm-ben, amely közvetlenül sok projektet érintett. Például az npm 5.7.0 verziójában, amikor végrehajtja a sudo npm parancsot egy Linux-alapú operációs rendszeren (OS), lehetőség volt megváltoztatni a rendszerfájlok tulajdonjogát, az operációs rendszert használhatatlanná téve.

hasonlóképpen 2018-ban történt egy másik Bitcoin lopás. Alapvetően a népszerű csomópont.js csomag EventStream hozzá egy rosszindulatú függőség flatmap-stream verziójában 3.3.6. Ez a rosszindulatú csomag tele volt titkosított hasznos teherrel, amely megpróbálja ellopni a bitcoinokat a fejlesztő gépéről.

a pnpm egyesíti mind az npm, mind a fonal pozitív tulajdonságait, hogy még jobb biztonságot nyújtson. Azt is végrehajtja a szigorú hozzáférés-ellenőrzési mechanizmus, amely megköti a csomagot, hogy csak a saját függőségek, amelyek meghatározott package.json fájl.

stabilitás

npm, fonal, és pnpm mentek keresztül több fázis az elmúlt években. Idővel a kódbázisuk érett, mert rengeteg hozzájárulást kaptak a nyílt forráskódú közösségtől.

és az idő múlásával új fogalmak és ötletek jelennek meg, amelyek áttörő változásokat hozhatnak. Az útmutató megírásakor ezek a csomagkezelők jó állapotban vannak, ezeket bármilyen probléma nélkül felhasználhatja projektjeiben.

a Facebook és a Google támogatja, az npm-et a Microsoft és a Node támogatja.a js-t és a pnpm — et többnyire egy személy fejlesztette ki, bár most már 75+ közreműködője van-így ezekre a csomagkezelőkre támaszkodhat a következő projekt létrehozásához.

A monorepos támogatása

a monorepos-t leginkább a nagy techcégek részesítik előnyben a hatalmas kódbázisok tárolására és kezelésére. az npm-et csak az egyes projektek kezelésére tervezték. Mostantól nincs olyan funkciója, amely támogatná a monorepos-t. De mind a fonal, mind a pnpm teljes mértékben támogatja a monorepos-t, a munkaterületek fogalmának köszönhetően.

determinisztikus-a zárfájl

mindhárom csomagkezelő tele van a zárfájl funkcionalitásával. Lehetővé teszi a különböző fejlesztők számára, hogy pontosan ugyanazt a projektet telepítsék. az npm package-lock.json fájlt használ, a fonalat yarn.lock használja, a pnpm pedig pnpm-lock.yaml.

következtetés

ha olyan megoldást keres, amely jobb sebességet és hatékony memóriahasználatot biztosít, akkor erősen fontolóra kell vennie a pnpm használatát.

ha monorepos-t kezel, használhatja a Pnpm-et vagy a fonalat. Ne feledje azonban, hogy a fonal használati adatokat küld a Facebook-nak, ami bizonyos esetekben nem biztos, hogy a fonal megfelelő választás.

a fonal szintén nem támogatja a Node 5. verzióját.js. Ebben a tekintetben az npm előnyös lehetőség a csomópont számára.js-alapú projektek, mert ajánlott a csomópont.js csapat. Manapság, Node.js jön NPM alapértelmezés szerint.

az npm-vel meg kell fontolnia annak történetét biztonsági kérdésekkel, ami a fonal fejlesztését váltotta ki, amelyet az npm-ben jelen lévő számos kibocsátó megoldására is létrehoztak. Tehát, ha aggódik a projektek biztonsága miatt, fontolja meg a fonal használatát az npm helyett.

LogRocket: hibakeresés JavaScript hibák könnyebb megértésével összefüggésben

hibakeresés kód mindig unalmas feladat. De minél jobban megérted a hibáidat, annál könnyebb kijavítani őket.

LogRocket lehetővé teszi, hogy megértsük ezeket a hibákat az új, egyedi módon. A frontend monitoring megoldás nyomon követi a felhasználó elkötelezettségét a JavaScript frontends, hogy megadja a lehetőséget, hogy megtudja, pontosan mi a felhasználó tette, hogy hibát okozott.

Logrocket Dashboard Free Trial Banner

logrocket records konzol naplók, oldal betöltési idők, stacktraces, lassú hálózati kérések/válaszok headers + szervek, böngésző metaadatok, valamint egyéni naplók. A JavaScript kód hatásának megértése soha nem lesz könnyebb!

próbálja ki ingyen.

Related Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük