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, apackage-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
.