A node_modules mappát a Gitbe kellene commitolni?

A 2021-es JavaScript Full-Stack Bootcamp már nyitva áll a jelentkezők előtt!

A node_modules mappát a Gitbe kellene commitolni?

A Gitet említem, de ugyanez vonatkozik bármilyen verziókezelő rendszerre, amit véletlenül használsz

Ez egy jó kérdés. Vannak érvek és ellenérvek.

Az alapértelmezettnek azt javaslom, hogy ne commitold a node_modules mappát, és helyette add hozzá a .gitignore fájlodhoz.

Egyáltalán lehetnek olyan speciális igényeid, amelyek megfordítják ezt a döntést.

Megbeszélem a témát, hogy kialakíthasd a saját véleményedet.

Itt van néhány érv a node_modules nem commitolása mellett

Tisztán tartod a Git előzményeit. Amikor új csomagot adsz hozzá, tárolod a package.json és package-lock.json fájlváltozásokat.Amikor úgy döntesz, hogy frissíted a csomag verzióját, csak a package-lock.json fájlváltozást tárolod.

package-lock.json Az npm egy viszonylag új funkciója, amely elavítja a korábban használt shrinkwrap parancsot

Elkerülöd, hogy esetleg több száz MB-nyi függőséget tegyél a tárolódba, és ez azt jelenti, hogy idővel gyorsabb lesz a munka vele. Az ágak váltása és a kód ellenőrzése 2 olyan művelet, amelyet nagymértékben befolyásol a tároló mérete.

Az ágakkal való munka során előfordulhatnak olyan egyesítési konfliktusok, amelyek túlmutatnak a saját kódodon, és ehelyett a függőségek kódját is érintik. Ezt nem kellemes kezelni, és sok időt veszíthetsz vele. Elkerülve a

Egy pull request vagy merge, ha megváltoztatja a függőségeket, sokkal több fájlt fog bevonni a folyamatba. Az eszközök lassabbá válnak, vagy akár úgy dönthetnek, hogy nem mutatják meg a teljes diff-et (GitHub, például)

A natív node modulokat újra kell fordítani, ha a fejlesztőgépedtől eltérő platformra telepíted (gyakori felhasználási eset: Mac-en fejlesztesz, Linux-on telepítesz). Meg kell hívnod a npm rebuild-t, ami a kiszolgáló szinkronizálását megszünteti.

A node_modules nem commitolása azt jelenti, hogy a package.json-ban (és a package-lock.json-ban) kötelező lépésként fel kell sorolnod az összes modulodat. Ez azért nagyszerű, mert lehet, hogy nincs szorgalmad ezt megtenni, és az npm egyes műveletei megszakadhatnak, ha nem teszed meg.

Tipp: a package.json fájlban nincs szükség a konkrét verzióra, a package-lock.json fájl bevezetése óta nincs többé.

Ha külön dependencies és devDependencies készleteket használsz, a node_modules mappa commitolásával gyakorlatilag a devDependencies commitolod, és nincs (egyszerű) módja annak, hogy a production build megszabaduljon tőlük.

Az okok, amelyek a node_modules commitolásához vezethetnek, és hogyan lehet ezeket mérsékelni

Egy npm csomagot a szerzője eltávolíthatja az npm registryből. Ez történt a híres left-pad incidenssel 2016-ban (olvass tovább). Ez nagyon ritkán fordul elő népszerű csomagok esetében. Ha ez történik, előfordulhat, hogy többé nem férhetsz hozzá az adott funkcionalitáshoz.

Azzal is érvelhetsz, hogy a npm nem garantáltan marad a végtelenségig, eltűnhet, így egy egyszerű módja annak, hogy garantáld, hogy a jövőben is rendelkezel az alkalmazásod teljes kódjával, ha az alkalmazásoddal együtt commitolod.

Minden alkalommal, amikor használsz egy csomagot, hozz létre egy forkot a GitHubon. Időnként tartsd naprakészen az eredetivel (automatizálható).

Ez nem mindig praktikus, mivel a csomagoknak több tucatnyi saját függőségük lehet.

Használhatsz egy privát repository szervert a projektedhez, és azt használhatod az összes függőséged tárolására.

A lehetőségek közé tartozik

  • sinopia
  • npm_lazy
  • npm-lazy-mirror
  • artifactory
  • npm Enterprise, az npm cégtől

Egy másik ok a függőségek commitolására a kód gyors szerkeszthetősége, ha hibát találunk, vagy ha valamit hozzá akarunk adni egy könyvtárhoz.

Ez egy kétélű kard: ha így teszel, elveszíted a csomag frissítésének lehetőségét, ha új kiadások készülnek, és ez csak gyors, ideiglenes javításokra jó.

Az optimális megoldás az, hogy vagy beadsz egy PR-t, ami azt csinálja, amit szeretnél, az eredeti projekthez, vagy elágazod azt, és függőségként használod az elágazásodat.

Töltsd le az ingyenes Node.js kézikönyvemet

A 2021-es JavaScript Full-Stack Bootcamp IS NOW OPEN FOR SIGNUPS UNTORNING UNTILLIGHT NEXT TUESDAY! Ne hagyd ki ezt a lehetőséget, jelentkezz még ma!

Még több node tutorial:

  • How to use promises and await with Node.js callback-based functions
  • The Node Core Modules
  • Parsing JSON with Node.js
  • Fájlleírókkal való munka a Node-ban
  • Node.js Streams
  • Hogyan kapjuk meg egy fájl utolsó frissítési dátumát a Node.js segítségével
  • A Mopsz útmutató
  • A jelenlegi mappa megkeresése a Node-ban
  • Hogyan használjuk a Node.js REPL-t

.

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

Az e-mail-címet nem tesszük közzé.