Pomoc s Eclipse rubrika: Programování: Jiné

6 Žížala
položil/-a 16.9.2015

Potřeboval bych pomoct s jednou drobností. Postavil jsem si v Eclipse vlastní builder, který se mě stará o automatickou kompresi stylů při uložení. Ale nenašel jsem způsob, jak Eclipsům říct, že to má být pouze na daný typ souboru. Jde to na vyjmenované resource, nebo na adresář. Ale potřeboval bych, aby to šlo na typ souboru. Řeším to kontrolou přípony souboru v baťáku, který se spouští z builderu. Nevíte někdo jak na to? Nějak jsem to nedokázl vygooglit...

BTW, tady je ten .BAT. třeba se bude někomu hodit

@setlocal enableextensions enabledelayedexpansion
@echo off
set inputfile=%1
set outputfile=%inputfile:.css=.min.css%
REM echo %inputfile%
REM echo %outputfile%
if not x%inputfile:.css=%==x%inputfile% java -jar yuicompressor-2.4.8.jar %inputfile% -o %outputfile% --charset utf-8 --nomunge
endlocal
odkaz
3 iguana007
odpověděl/-a 17.9.2015

Moje odpověď problém s Eclipse nevyřeší, ale může pomoci.
Já používám na tyto úkony Gulp - vytvořil jsem si jeden config, který mi zpracovává Less, spojuje+minifikuje CSS, spojuje a komprimuje JS a v poslední řadě i optimalizuje obrázky. Stačí to pouze ráno pustit, samo si to monitoruje změny podle zadaných filtrů a za chodu při změně okamžitě zpracovává.
Výhodu to má i v tom, že je to nezávislé na platformě a také na tom, v jakém editoru kdo pracuje, stačí mít nainstalovaný Gulp a všichni v týmu jej mohou na základě distribuovaného configu rovnou používat.

Komentáře

  • Žížala : Já se právě chci Gulpu a pod. řešením vyhnout, proto se to snažím udělat interním nástroji Eclipse. Už toho používám nějak moc... 17.9.2015
  • skliblatik : Souhlasím s gulpem, zdá se mi to lepší než jednorázové Eclipse+.BAT udělátko. @Žížala co všechno používáš? 17.9.2015
  • Žížala : Udělátko funguje, jenom se zbytečně vyvolává, jinak je bez chyby. A nepotřebuje to node.js k životu... A používám 3 DB nástroje, Eclipse, MS Development sudio, různé textové editory a procesory (včetně office), 2 různé standalone XML editory (podle různých schemat a nálady je střídám), různé statistické nástroje , aktuálně jich je 7. Mám napsáno několik desítek API/CLI v PHP,JS,VBS,JAVA se kterými skoro denně pracuji. K tomu nějaké SSIS. 2 grafické editory. Spravuji 10 eshopů. Takže dávat na komp ještě GULP/GRUNT a node.js se mě už vážně nechce. Buď poohýbám Eclipse jak potřebuji, nebo je změním na něco jiného. Ale vážně se mě už nechce starat o další 2 programy, které jsem shopem nahradit pomocí http://closure-compiler.appspot.com/home a http://refresh-sf.com/. Jedině pokud to nepujde jinak... 17.9.2015
  • skliblatik : @Žížala no máš toho nemálo. Chápu nechuť ten repertoár bez silného důvodu rozšiřovat, já taky zvažuju co opravdu potřebuji.. A to jsi tam nenapsal git, unittesty,... Nicméně pokud by jsi použil ten gulp (grunt osobně úplně nemusím), tak to máš sice 3 věci navíc (vedle gulpu a nodejs tam ještě bude vhodné npm), ale mělo by tím jít nahradit posledně zmiňované tooly (které předpokládám buď používáš ručně, nebo máš pro to opět vlastní skripty) + Eclipse+.BAT. Plus navíc jak píše @iguana007, snadno si tam přidáš css preprocesing (a tam na to asi snadno nevyzraješ uložením v eclipse) a podobné věci. Instalace nodejs + npm + gulp není nějak náročná (i když pravda nemám zkušenosti s windows). Gulp sám o sobě je jednoduchý (jednodušší než grunt), na spoustu standardních věcí jsou pluginy. 17.9.2015
  • Žížala : GIT se mě ještě nepovedlo prosadit, používá se tu SVN. Jo testovací a reportovací nástroje jsem fakt nezmiňoval, to bych sem musel přihodit i Redmine, MediWiki, LiveZillu a další "ptákoviny" xD CSS preprocesing jde taktéž udělat baťákem. Může a nemusí to být BAT, klidně tam dám .WSF nebo PowerShell script ... Builderů se nechá poskládat hafo, problém je jenom s tím, že se to vyvolá na každý typ souboru a musí se to filtrovat podle přípony ve vyvolávaném programu. 18.9.2015
  • v6ak : Já jsem taky pro nějaký buildovací nástroj jakožto řešení nezávislé na IDE. Kolega s jiným IDE pak může snadno importovat projekt a půjde to například snadno spustit na build serveru. Nebo až sám budeš měnit IDE… Možná ani jedno z toho není dnes podstatné (takže není nutné s tím spěchat), ale snažil bych se k tomu směřovat. 18.9.2015
  • Žížala : v6ak: Styly a JS musejí od vývojáře odcházet do ITG minifikované. Vývojář ručí za to, že po minifikaci/obuskaci a ja nevém čem ještě jsou styly/js/xml OK. Teď jsme zrovna museli řešit problém, že do produkce odešli minifkované styly, které minifikační nástroj poničil. Takže jsem změnil nástroj na YUI a hledám cestu jak to nesjnadněji zajistit bez potřeby dalšího vybavení, jenom s pomocí vývojářského nástroje a nejakých obslužných nastavení/scriptů. Hledal jsem plugin do Eclipse, ale nic vyhovujícího nenašel :( 18.9.2015
  • skliblatik : @Žížala a tu změnu na YUI provedli všichni? A každý si to integruje do svého IDE? Build skript (u gulpu gulpfile.js) bývá součástí repozitáře, takže např. změnu minifikačního nástroje udělá jeden a ostatní ji dostanou automaticky, při stažení repozitáře, to stejné nováček. Build skript pak také slouží jako dokumentace. 18.9.2015
  • Kit : @skliblatik: Přechodem na Git by se ta minifikace dala zautomatizovat na serveru přidáním hooku. Vývojář by se tím vůbec nemusel zabývat. Naopak bych od něj požadoval precizně nastylovaný kód, což opět dokáže zajistit Git pomocí filtrů clean a smudge. Namátkou jsem vygooglil: http://www.yearofmoo.com/2011/04/minify-css-and-js-with-git-hooks.html 18.9.2015
  • skliblatik : @Kit Žížala píše "Styly a JS musejí od vývojáře odcházet do ITG minifikované". Jinak jo - minifikace by tak řešit šla. Pokud máš např. pro css preprocesor, pro js browserify apod. tak to hookem nevyřešíš. 18.9.2015
  • Taco : @Kit: svn má taky postcommit hook. Takže toto nebude jako argument stačit. 18.9.2015
  • Kit : @skliblatik: Vyřešíš. Pro každý typ souboru nastavíš jiný hook. @Taco: Je mi tedy divné, proč ten postcommit hook @Žížala ještě nenastavil. 18.9.2015
  • skliblatik : @Kit: Nevyřešíš - protože neodladíš (pokud teda nepíšeš naslepo). 18.9.2015
  • Kit : @skliblatik: Promiň, ale před pár minutami jsem to dělal na jednom ze svých projektů. Valí to jak z praku - dokonce obousměrně. Co bych na tom měl ladit? 18.9.2015
  • skliblatik : @Kit bavíme se o css preprocesoru - napíšeš kód preprocesoru, zkompiluješ do css, zkontroluješ v prohlížeči, commitneš, pošleš dál. Podobně js přes browserify - napíšeš js moduly, zkompiluješ, otestuješ, commitneš, pošleš dál. To potřebuje programátor při své práci - ne až při integraci na serveru. 18.9.2015
  • Kit : @skliblatik: Jo tak, to mi dělá přímo editor, když zmáčknu F9 - viz můj příspěvek. Zkompiluje, spustí testy a zobrazí výsledky. Orientuje se přitom podle přípon, na kterých si buduje závislosti. Považoval jsem to za samozřejmost, mám to tak už spoustu let. 19.9.2015
  • Žížala : Postcommit hook je k ničemu, to je kontrola až po commitu. A akci na klávesu chci právě zrušit. Už se jednomu kolegovi opakovaně stalo, že poslal ven nekompresené styly. A nevím o jiném než lidkesém testu jak otestovat styly, že jsou po kompresi OK. Kompresím styly tak, že se zkracují barvy, odebírají poslední středníky a tak... Nekompresím styly tak, že je vyleju jenom do jedné mega dlouhé řádky.... 21.9.2015
  • Kit : @Žížala: Tohle přece může běžet na serveru SVN. A když to bude chybně, tak se to na serveru neuloží a omlátí vývojáři o hlavu. Tedy ne postcommit, ale precommit hook. BTW: Proč ti vadí středníky? 21.9.2015
  • Žížala : Aktuálně se jich odebere přes 1300, takže o 1300bytů menší file ... kapka ke kapce a po kompresi jsou styly o 20KB menší ... Co by eshopista neudělal pro rychlejší natažení zákazníkovi .... 21.9.2015
  • Kit : @Žížala: No, tak především nešetřit na množství textu, ale na množství grafiky. Přiměřeně. Odstraněním jednoho zbytečného obrázku ušetříš mnohem víc. 20KB úspora na něčem, co stejně zůstává v cache prohlížeče, to se jistě vyplatí... Moment, chceš mi snad tvrdit, že tvé CSS jsou větší než oněch ušetřených 20 KB? Řekl bych, že něco tam v CSS máš úplně špatně. 21.9.2015
  • skliblatik : @Žížala přeji příjemnou zábavu s Kitem :) 21.9.2015
  • Žížala : Kit: nevíš o čem mluvíš... A ano naše CSS mají několik tisíc řádků. Máme dost složitý web (nejenom technologicky) a používáme i jQueryUI. A neraď mě jak optimalizovat eshop... A pokud to nevíš, tak se velikost .css a .js se optimalizuje hlavně pro první příchod na web, aby ti zakaznik neutekl jelikož se mu stránka načítá 10sekund... A ano, nástroje jako PageSpeed a podobně dnes a denně používám... 21.9.2015
  • Kit : @Žížala: Optimalizaci CSS si představuji tak na 200-500 řádek běžného kódu bez komprese. Tedy cca do těch 20 KB - víc ne. Aby mi zákazník neutekl, musí se stránka vyrenderovat do 3 sekund, ale snažím se vždy o to, aby to bylo pod jednu sekundu. Optimalizace JS a CSS musí začít u programátora, resp. designera. Technická komprese je téměř bez užitku, protože se to stejně vše před vlastním přenosem komprimuje gzipem... 21.9.2015

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.