Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Diskuze: Správná práce s NPM?

JavaScript JavaScript Správná práce s NPM? American English version English version

Aktivity (1)
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:25. března 18:03

Ahoj,

rád bych se naučil pracovat správně s balíčkovacími "službami" jako je npm, nebo bower.

můj problém a zároveň i otázka je - jaký je správný postup při práci od samotného vývoje až po nasazení webu/aplikace na produkci? Během vývoje střílím npm/bower install <balíček>, které se ukládají do node/bower_modules a stáhne se k nim opravdu velké množství redundantních souborů. Takhle to ale přece nemůžu "mrsknout" na server, ne? Jaký je tedy správný postup, abych si z těchto technologií mohl vytáhnout jen to, co opravdu potřebuji a měl to hned při ruce?

Když budu instalovat například bootstrap - stáhne se do node/bower_modules / dist / bootstrap / - k němu ale i plno dalších věcí, není nějaká cesta k tomu, aby se "potřebné" zdrojové soubory házely někam mimo, jako bych je instaloval ručně? Možná mám úplně špatné postupy, ale opravdu mi toto nedává moc smysl :/

Díky a hezký zbytek neděle :)

 
Odpovědět  +2 25. března 18:03
Avatar
DHPICO
Redaktor
Avatar
Odpovídá na Jan Vacek
DHPICO:25. března 19:46

node_modules bys měl mít v gitignore, takže je neverzuješ a správně bys ručně do nich neměl vůbec zasahovat, ty další balíčky, které se doinstalovávají jsou závislosti těch balíčků, které jsi doinstaloval, takže pokud by tam nebyly, tak by ti to nefungovalo, NPM jede na principu, že uděláš modul, který řeší nějakou drobnou věc, ale dobře a takto skládáš několik modulů do sebe, je špatně dělat velké rozsáhlé moduly. Pokud chceš jen nějakou konkrétní funkčnost, tak si najdi package, který umí jenom tu danou věc... ohledně mrsknutí na server: jakmile nastavíš environment na produkci, tak těch balíčků je třeba jen 20%, protože ten zbytek slouží často k testování a podobným věcem během vývoje.

Dělám na celkem velkém projektu a v node_modules mám dohromady 2000+ modulů a na produkci pak okolo 500.

Editováno 25. března 19:47
Nahoru Odpovědět 25. března 19:46
Požehnáni budíš oráj
Avatar
DHPICO
Redaktor
Avatar
Odpovídá na Jan Vacek
DHPICO:25. března 19:57

v momentě, kdy bys chtěl dané moduly hodit mimo tuto složku, tak už nemůžeš počítat s automatickým doinstalováním z ůdajů, které máš v package.json, leda by sis napsal vlastní post install script, ale jaká je motivace k tomu ? stejně to pro tebe nebude mít žádnou výhodu a pokud si chceš něco upravit, tak si napiš rozšíření pro daný modul nebo si ho forkni na githubu a nahraj pod sebou, ale pak už jedeš na vlastní pěst, takže v nejhorším pull request

Nahoru Odpovědět 25. března 19:57
Požehnáni budíš oráj
Avatar
Marian Benčat
Redaktor
Avatar
Odpovídá na Jan Vacek
Marian Benčat:25. března 20:06

Prokáži ti službu a napíši to bodově a velmi explicitně:

  • ano, v node_modules běžně najdeš statisíce souborů a složka Node_modules má skutečně třeba klidně 1GB, je to špatně? ANO, ale bohužel je to tak
  • při vývoji v Javascriptu pro každé uprdnutí si, musíš nejdříve nainstalovat miliardu balíčků, protože valná většina JS vývojářů je banda idiotů, co raději vytvoří 100 balíčků na porovnání 2 polí, místo toho aby napsali sami ty 3 řádky kódu. Je to špatně? ANO, ale bohužel je to tak
  • při NPM I nezapomeň --save-dev nebo --save, který ti uloží do package.json informaci o tom, že tento balíéček je nutný buďto pro vývoj, nebo pro běh. Jediné co dáváš do VCS je pak ten package.json a pak package-lock.json, jelikož ten jediný ti zaručí, že opravdu verzuješ i ty nainstalované balíčky (protože v JS světě je většina lidí banda idiotů,. co neví co znamená sémantické verzování a ještě jsou všechny závsilosti ideálně přes RANGE - ne konkrétní specifická verze, ale o tom až někdy jindy...)
  • Většinou na produkci nemáš žádných 500 balíků, jak píše píča nahoře, ale snažíš se to vybuildit do nějakého výsledného bundlu.. On má 500 balíčků, protože v JS má napsaný server (což považuji osobně za čiré šílenství, ale o tom se tu nebavíme..) ty mluvíš velmi pravděpodobně o clienské aplikaci? (proto ten bower?), v takovém okamžiku ty budeš chtít těchto 5 000 souborů a 1GB zbundlit do 1 malého souboríku...
  • k bundlení se používá bundler.. takovým nejpoužívanějším a asi stále nejlepším bude nejspíše Webpack.. ten webpack ti ty všechny resource (javascripty, html, styly,..) vezme, vysype z nich pryč co nepoužíváš (v produkčním buildu - treeshaking) a dá do jednoho, či více souborů..
  • doporučuji tedy do googlu zadat něco jako "webapck-starter-kit" ..
Editováno 25. března 20:08
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 25. března 20:06
Totalitní admini..
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:25. března 20:07

Tedy.. hádám že DHPICO znamena to co jsem si myslel, jinak jsem nechtel urazit ;-)

Nahoru Odpovědět 25. března 20:07
Totalitní admini..
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:25. března 20:12

tak se jdu pokusit s tím nějak čarovat :) díky pánové :)

 
Nahoru Odpovědět 25. března 20:12
Avatar
DHPICO
Redaktor
Avatar
Odpovídá na Marian Benčat
DHPICO:25. března 20:22

“Haha”

Nahoru Odpovědět  +4 25. března 20:22
Požehnáni budíš oráj
Avatar
Odpovídá na Marian Benčat
Vladislav Ladicky:26. března 19:27

Marian prečo sa vyjadruješ k tomu, čomu nerozumieš? :D Ešte zhoď aj Javu, lebo aj tam má projekt aj tisíce súborov - veď čo trieda to súbor, no aký to zlý nápad :D Ty si fakt nedovidíš ďalej od nosa...

 
Nahoru Odpovědět  +2 26. března 19:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.