Tábor 2021 JavaScript Full-Stack Bootcamp je nyní otevřen pro přihlášení!
Měli byste složku node_modules odevzdat do systému Git?
Zmiňuji Git, ale totéž platí pro jakýkoli systém správy verzí, který náhodou používáte
To je dobrá otázka. Existují pro a proti.
Navrhuji, abyste ve výchozím nastavení složku node_modules neodepisovali a místo toho ji přidali do souboru .gitignore
.
Můžete mít speciální potřeby, které toto rozhodnutí zvrátí.
Probírám toto téma, abyste si mohli udělat vlastní názor.
Tady jsou některé argumenty ve prospěch neodepisování node_modules
Udržíte si čistou historii systému Git. Když přidáte nový balíček, uložíte změny souborů package.json
a package-lock.json
Když se rozhodnete aktualizovat verzi balíčku, uložíte pouze změnu souboru package-lock.json
package-lock.json
Je to relativně nová funkce npm, která zastarává v minulosti používaný příkaz shrinkwrap
Vyhnete se nutnosti vkládat do úložiště možná stovky MB závislostí, a to znamená, že časem bude práce s ním rychlejší. Přepínání větví a kontrola kódu jsou 2 operace obrovsky ovlivněné velikostí úložiště.
Při práci s větvemi může dojít ke konfliktům při slučování, které přesahují váš kód a místo toho zahrnují kód závislostí. To není příjemné řešit a může vás to připravit o spoustu času. Vyhněte se vkládání
Žádosti o stažení nebo sloučení, pokud měníte závislosti, bude do procesu zapojeno mnohem více souborů. Nástroje se zpomalí nebo se dokonce rozhodnou nezobrazovat úplné rozdíly (například GitHub)
Nativní moduly uzlu je třeba překompilovat, pokud je nasazujete na jinou platformu, než je váš vývojový stroj(běžný případ použití: vyvíjíte na Macu, nasazujete na Linuxu). Musíte zavolat npm rebuild
, což vyřadí server ze synchronizace.
Neodevzdání node_modules znamená, že musíte jako povinný krok uvést všechny své moduly v package.json
(a package-lock.json
). To je skvělé, protože na to nemusíte mít dostatek píle, a pokud to neuděláte, některé operace npm se mohou rozbít.
Tip: od zavedení souboru
package-lock.json
už není nutné používat konkrétní verzi v souborupackage.json
.
Používáte-li oddělené soubory dependencies
a devDependencies
, odevzdáním složky node_modules
v podstatě odevzdáváte devDependencies
a neexistuje žádný (snadný) způsob, jak se jich produkční sestavení zbavit.
Důvody, které vás mohou vést k odevzdání node_modulů, a jak je zmírnit
Balíček npm
může jeho autor odstranit z registru npm. Stalo se to při známém incidentu left-pad
v roce 2016 (více informací). U populárních balíčků se to stává velmi zřídka. Pokud se tak stane, je možné, že už nebudete mít přístup k dané části funkčnosti.
Můžete také namítnout, že npm
není zaručeno, že tu zůstane na neurčito, může zmizet, takže jednoduchý způsob, jak zaručit, že budete mít v budoucnu k dispozici kompletní kód své aplikace, je odevzdat ho spolu s aplikací.
Při každém použití balíčku vytvořte na GitHubu fork. Jednou za čas jej aktualizujte spolu s originem (lze automatizovat).
To není vždy praktické, protože balíčky mohou mít desítky vlastních závislostí.
Pro svůj projekt můžete použít soukromý repozitářový server a na něm hostovat všechny své závislosti.
Mezi možnosti patří
- sinopia
- npm_lazy
- npm-lazy-mirror
- artifactory
- npm Enterprise, od společnosti npm
Dalším důvodem pro odevzdání závislostí je možnost rychlé úpravy kódu, pokud najdete chybu nebo pokud chcete do knihovny něco přidat.
Je to dvousečná zbraň: pokud to uděláte, ztratíte možnost aktualizovat balíček, pokud vyjdou nová vydání, a je to dobré jen pro rychlé, dočasné opravy.
Optimálním řešením je buď odeslat PR, který dělá to, co chcete, do původního projektu, nebo ho forknout a použít svůj fork jako závislost.
Stáhněte si mou bezplatnou příručku Node.js
Tábor JavaScript Full-Stack Bootcamp 2021 JE OTEVŘEN PRO PŘIHLÁŠKY DO PŘÍŠTÍHO ÚTERÝ! Nepropásněte tuto příležitost, přihlaste se ještě DNES!
Další node tutoriály:
- Jak používat sliby a await s funkcemi založenými na zpětných voláních Node.js
- Jádrové moduly Node
- Parsing JSON with Node.js
- Práce s deskriptory souborů v Node
- Proudy Node.js
- Jak získat datum poslední aktualizace souboru pomocí Node.js
- Průvodce Pug
- Zjištění aktuální složky v Node
- Jak používat Node.js REPL
.