Megszabadulni a csomópont_moduloktól a Fonal Plug'n'Play segítségével

Csökkentse a telepítési időt akár 70% -kal. Kérdezd meg, hogyan! ?

Aki ismer, megerősítheti, hogy a JavaScript és annak teljes ökoszisztémájának régóta szeretője vagyok . Front-end mérnökként a Node-alapú csomagkezelők 2013 óta kulcsfontosságú részét képezik eszközkészletemnek.

Először a Bower-t használtam, amely elsősorban a front-end világra koncentrált. Aztán 2015-ben szomorúan (rendben, nem igazán ) jöttem rá, hogy Bower haldoklik, és az NPM, a Node alapértelmezett csomagkezelője is a jó út a front-end felé. Először furcsa volt számomra, hogy az NPM-et más célokra használtam, mint a Node modulokat, de megszoktam az ötletet, és zökkenőmentesen vándoroltam.

Végül, csak egy évvel később, a Facebook adott nekünk egy fonalat, az NPM modern és lángoló gyors alternatíváját. Első látásra imádtam! De néhány dolog továbbra is problémás volt ...

Örökölt problémák a fonalban

A sebesség mellett a fonal számos előnyt hozott az akkori NPM verzióhoz képest, mint például a zárfájlok, az offline mód, a hálózati rugalmasság, az ellenőrző összegek és mások. Ennek ellenére Yarn kölcsönvett néhány ismert problémát az NPM-től:

csomópont_modulok itt, ott, mindenhol

A gép minden egyes projektjéhez, amely NPM-et vagy fonalat használ, node_modulesmappa jön létre. Nem számít, ha 10 projekt egy adott modul pontosan ugyanazt a verzióját használja, a projekt minden egyes node_modulesmappájába átmásolódik .

Az új node_modules mappa létrehozása nagyon sok időt vesz igénybe

A fonalat még a telepítési sebesség szempontjából is nagy előrelépés jelentette, a node_modules korlátozások korlátozták. Csak a node_modules mappa létrehozása a futtatáshoz szükséges idő akár 70% -át is igénybe veszi yarn install(meleg gyorsítótárral). Hatalmas mennyiségű fájl hozható létre minden telepítéskor. Tehát ne hibáztasd fonalat.

A függőségek nincsenek hozzáadva a package.json fájlhoz

Íme egy forgatókönyv az Ön számára: Az alkalmazás tökéletesen működik a fejlesztés során, de a gyártás során összeomlik. Órákig tartó nyomozás után végre rájössz, hogy elfelejtett függőséget adni az önéhez package.json. Igen, megtörténhet.

Lassú modulfelbontás futás közben

Az alkalmazás indítási idejét nagymértékben befolyásolja az, ahogyan a Node megoldja a függőségeket. Időt pazarol a fájlrendszer lekérdezésével, hogy kiderítse, honnan oldódik meg egy adott függőség.

Plug'n'Play fonal a megmentéshez!

A fenti problémákat a Fonal csapata kezelte a Plug'n'Play szolgáltatás tavaly szeptemberi kiadásával.

Ha engedélyezi a PnP-t, a szükséges fájlok másolása a gyorsítótárból a node_modulesmappába a következő:

  1. Egyetlen fájlt hoz létre statikus felbontású táblákkal. Ezek a táblák egy csomó fontos információt tartalmaznak, például: a függőségi fában elérhető csomagok, hogyan viszonyulnak egymáshoz és a lemezen való helyükhöz.
  2. Egy speciális felbontót használnak a csomópont megkeresésére, hogy az egyes függőségeket hova telepítették (a Fonal gyorsítótár mappája alatt). Kizárólag a korábban létrehozott felbontási táblázatokra támaszkodik. Mivel ezek a táblák információkat tartalmaznak a teljes függőségi fa, a node_modules felbontás folyamat nem kell, hogy egy csomó stat, és readdirfelhívja a futás már, jelentősen csökkentve az alkalmazás indítási időt. És mivel a fonal ismeri az összes függőségedet, panaszt fog tenni, ha megpróbálsz olyan modult importálni, amely nem szerepel a következőkben package.json:

A Plug'n'Play fonal használatával

A projekt konvertálása a PnP használatára egyszerű, mint 1–2. Csak hozzá kell adnia egy installConfigszakaszt package.jsona következőhöz: pnpkulcs beállítása true:

{ "installConfig": { "pnp": true }}
Megjegyzés: A Plug'n'Play használatához a Yarn v1.12 + szükséges.

Ezt követően csak fuss, yarn installés a mappádon belül minden node_modulestörlődik. Mostantól minden függőséget közvetlenül Yarn gyorsítótárából oldanak meg.

A PnP használata egy új React projektben a create-react-app alkalmazással

Ha a create-react-app 2+ szoftvert használja, akkor jó hír, hogy kiválóan működik a Yarn Plug'n'Play-vel! Csak csatolja az --use-pnpopciót a create-react-appparancshoz, és máris mehet:

npx create-react-app your-app-name --use-pnp

Lehetséges kérdések

Mivel semmi sem tökéletes a világon, a PnP új problémákat vet fel, ha az egyedi telepítési logikára támaszkodva projektekben használják. Ha további információkra van szüksége ezekről a lehetséges új kérdésekről, részletes magyarázatot talál ebben a cikkben.

Következtetés

A Plug'n'Play nagyon idegesítő problémákat old meg a fonalban. Emellett drámai módon javítja a CI-k függőségi gyorsítótárát, megtakarítja a telepítési időt, és lehetővé teszi, hogy építéseink a lényegre térjenek: futtassák a teszteket!

És ez az! Jó szórakozást a Yarn PnP-vel.