IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:25.3.2018 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
25.3.2018 18:03
Avatar
DHPICO
Tvůrce
Avatar
Odpovídá na Jan Vacek
DHPICO:25.3.2018 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.3.2018 19:47
Nahoru Odpovědět
25.3.2018 19:46
Požehnáni budíš oráj
Avatar
DHPICO
Tvůrce
Avatar
Odpovídá na Jan Vacek
DHPICO:25.3.2018 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.3.2018 19:57
Požehnáni budíš oráj
Avatar
Odpovídá na Jan Vacek
Marian Benčat:25.3.2018 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.3.2018 20:08
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
25.3.2018 20:06
Totalitní admini..
Avatar
Marian Benčat:25.3.2018 20:07

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

Nahoru Odpovědět
25.3.2018 20:07
Totalitní admini..
Avatar
Jan Vacek
Člen
Avatar
Jan Vacek:25.3.2018 20:12

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

 
Nahoru Odpovědět
25.3.2018 20:12
Avatar
DHPICO
Tvůrce
Avatar
Odpovídá na Marian Benčat
DHPICO:25.3.2018 20:22

“Haha”

Nahoru Odpovědět
25.3.2018 20:22
Požehnáni budíš oráj
Avatar

Člen
Avatar
Odpovídá na Marian Benčat
:26.3.2018 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
26.3.2018 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.