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
- jellemzői npm, fonal, és pnpm
- az npm előnyei:
- Előnyei Fonal:
- A pnpm előnyei:
- csomagkezelő összehasonlítás
- könnyű használat
- speed
- biztonság
- stabilitás
- A monorepos támogatása
- determinisztikus-a zárfájl
- következtetés
- LogRocket: hibakeresés JavaScript hibák könnyebb megértésével összefüggésben
Á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:
- 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
- Kezelése helyi vagy globális függőségek könnyedén
- npm jól felszerelt kezelni több változata is függőségek
- Ez egy hivatalos jegyzék, amely több csomagból, mint pypi, rubygems, vagy packagist
Előnyei Fonal:
- 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 anpm install
parancsot manuálisan kell futtatnia az egyes csomagmappákban. - 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-cache
alatt. 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 - 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 - 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
- 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
- é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:
- kompatibilis az npm-mel, de lényegesen jobb lemezterület-használatot és sebességet is kínál
- 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:
- 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
- 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 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.