Dynamické vkladanie iba použitých CSS a JS súborov

před 7 lety

romiix.org
Člen | 349
+
0
-

Cieľ:

Cieľom bolo umožniť v šablónach definovanie CSS a JS súborov.
Vytáčalo ma, že vždy som musel definovať v HeaderControl všetky CSS a JS súbory ktoré sa používali na celom webe a tie sa vždy všetky ťahaly ku klientovy pri každom požiadavku.
Podla mňa nemá konfigurácia súborov pre UI čo hľadať v presentri, je to predsa úloha ako stvorená pre šablóny.
K používateľovi sa dostanú vždy iba tie ktoré sú preňho potrebné.

Ako to funguje:

V hociktorej šablóne (pre view aj komponentu) je možné použiť makrá {css}, {js}, {cssContent}, {jsContent}.

Makrá {css} a {js}

Prijímajú zoznam súborov ktoré šablóna potrebuje. Je vhodné plniť zoznam aj so závislosťami. Každý súbor sa vráti ku klientovy maximálne raz.
Súbor sa najprv hľadá:

  1. v priečinku so šablónou (je vhodné najmä pri adresárovej štruktúre v ktorej každá komponenta obsahuje CSS/JS súbory vo svojej zložke
  2. v priečinku definovanom v $csspath/$jspath
  3. nehľadá, použije sa absolútna (definovaná) cesta
Ukážka použitia:
{css "grid.css"} {* Nájde v priečinku <priečinok so šablónou>/screen.css *}
{css "screen.css"} {* Nájde v priečinku $csspath/screen.css *}
{css "/var/www/sk/web/www/style/css/screen.css"} {* Nájde v priečinku "/var/www/sk/web/www/style/css/screen.css" *}
{js "live-form-validation.js"}
{js "jquery.min.js", "jquery.nette.js", "jquery.ajaxform.js"} {* definovanie so závislosťami *}
Makrá {cssContent} a {jsContent}

Tieto makrá sú párové a uzatvárajú obsah. Občas sa stáva, že síce máme v načítaný JS, ale potrebujeme ho ešte inicializovať. Pre tento prípad som zvykol vytvárať extra súbor <knižnica>.init.js. To už nie je potrebné:) V priečinku definovanom vo $webtemp sa vytvorí súbor <md5 hash obsahu suboru>.css/.js a ten sa vloží do hlavičky.

Ukážka použitia:

Ak je potrebné v danej šablóne upraviť nejaký detail v CSS, je možné vložiť obsah, ktorý sa načíta iba pri tejto jednej šablóne:

{cssContent}
* { color:red}
{/cssContent}

Obdobne je možné vytvoriť inicializační JS:

{jsContent}
$( 'textarea.editor' ).ckeditor();
{/jsContent}
Kompilátory

Na CSS a JS súbory je možné aplikovať kompilátor. Slúži na to $cssCompilator a $jsCompilator.

Príklad použitia v BasePresenter.php v metóde startup
$this->context->publicFileCollector->cssCompilator[] = function ($content)
    {
        /* Strips Comments */
        $content = preg_replace('!/\*.*?\*/!s','', $content);
        $content = preg_replace('/\n\s*\n/',"\n", $content);

        /* Minifies */
        $content = preg_replace('/[\n\r \t]/',' ', $content);
        $content = preg_replace('/ +/',' ', $content);
        $content = preg_replace('/ ?([,:;{}]) ?/','$1',$content);

        /* Kill Trailing Semicolon, Contributed by Oliver */
        $content = preg_replace('/;}/','}',$content);

        /* Return Minified CSS */
        return $content;
    };

Postup zfunkčnenia:

  1. Stiahnuť z https://github.com/…aderControl/
  2. Rozbaliť niekam kde „vidí“ RobotLoader
  3. Nastavenie NEON konfigurácie
common:
    nette:
        latte:
            macros:
                - \RM\HeaderControl\JsCssMacros #inštalácia potrebných makier (pre inštaláciu NEON-om je nutná najnovšia verzia z gitu)
    services:
        publicFileCollector:
            class: \RM\PublicFileCollector
            setup:
                - $csspath(%wwwDir%/style/css) # nastavenie defaultnej cesty k css súborom
                - $jspath(%wwwDir%/style/js) # nastavenie defaultnej cesty k js súborom
                - $webtemp(%wwwDir%/webtemp) # nastavenie cesty k priečinku kam sa budú ukladať súbory
                - $removeOld(true) # odstrániť staré verzie CSS/JS?
                - addCss( [%wwwDir%/style/css/screen.css] ) # manuálne pridanie súboru, ktorý sa bude načítať vždy
    # používam HosipLan-ov kód z https://forum.nette.org/cs/9466-novy-configurator-tovarnicky-opet#p70019.
    # je možné vytovoriť obdobnú obyčajnú komponentu napr. v BasePresentri
    factories:
        header:
            class: \RM\HeaderControl
            setup:
                - setDocType(html5)
                - setLanguage(sk)
                - setTitle("Titulok")
                - addKeywords(["Key1","Key2"])
                - setDescription("Popis")
  1. upraviť @layout.latte aby vyzeral nejak takto:
{capture $html}
<body>
...
</body>
</html>
{/capture}
{control header}
{!$html}

Todo:

  • Doplnenie komentárov
  • examples
  • Refaktoring
  • Odstránenie závislostí HeaderControl-u na Environment

Čo si o tomto celom myslíte?
Má niekto nejaký nápad ako to zjednodušiť, vylepšiť a pod.?

PS: Toto je NEOTESTOVANÁ VÝVOJOVÁ VERZIA.
PS2: Mám sa posnažiť o nejaký vývoj pre ostatných (GitHub, Composer), bude to niekto okrem mňa používať?
PS3: Ak by mi niekto venoval nejaký čas a vysvetlil nejaké problémy okolo GitHub-u a Composer-u, rád splním PS2:)

Editoval romiix.org (4. 11. 2012 1:25)

před 7 lety

Filip Procházka
Moderator | 4693
+
0
-

Github je docela základ. Chtěl jsem se na to podívat, ale z uložto to stahovat nebudu.

před 7 lety

romiix.org
Člen | 349
+
0
-

Aj keď to vzhľadom na predošlí príspevok vyzerá, že HosipLan s tým nič nemá, hodne vecí som s ním diskutoval a inšpiroval sa uňho. Vďaka;)

před 7 lety

davidm
Člen | 82
+
0
-

Kdyby to bylo na Githubu tak bych se na to rád podíval …

před 7 lety

romiix.org
Člen | 349
+
0
-

Čo máte všetci s tým GitHub-om :D
No jo.. idem sa s tým popasovať :P

před 7 lety

romiix.org
Člen | 349
+
0
-

Pridaná podpora pre kompilátory ako služby.

common:
    services:
        publicFileCollector:
            class: \RM\PublicFileCollector
            setup:
                - $csspath(%wwwDir%/style/css)
                - $jspath(%wwwDir%/style/js)
                - $webtemp(%wwwDir%/webtemp)
                - $removeOld(true)
                - addCssCompilator(@cssSimpleMinificator)
        cssSimpleMinificator:
            class: \RM\PublicFileCollector\CssSimpleMinificator

před 7 lety

romiix.org
Člen | 349
+
0
-

Ešte premýšľam nad podporou balíčkov.
Napríklad v šablóne s NiftyGrod-om by som potreboval manuálne vypísať:

{js "jquery.min.js", "jquery-ui.js", "netteForms.js", "grid.js"}
{css "grid.css", "grid.custom.css"}

Toto je dosť pracné vypisovať v každej šablóne s gridom.
Preto by bolo fajn definovať balíček

common:
    services:
        publicFileCollector:
            setup:
                - addPackage("NiftyGrid",["jquery.min.js", "jquery-ui.js", "netteForms.js", "grid.js"], ["grid.css", "grid.custom.css"])

Syntaxou NEON-u si nie som 100% istý
a potom by stačilo v šablóne použiť

{pfpack NiftyGrid}

To by bolo celkom fajn, nie?

Plus ešte by som mohol implementovať aj vkladanie balíčkov do balíčkov. (dosť krkolomné vyjadrenie myšlienky:)

common:
    services:
        publicFileCollector:
            setup:
                - addPackage("jQuery",NULL,["jquery.min.js"])
                - addPackage("jQuery-UI",["jQuery"],["jquery-ui.js"])
                - addPackage("netteForms",NULL,["netteForms.js"])
                - addPackage("NiftyGrid",["jQuery","jQuery-UI","netteForms"],["grid.js"], ["grid.css", "grid.custom.css"])

Výhodou by bola možnosť vypísania jednej cesty k súboru vždy iba raz a následného používania skrátených názvov.

Touto úpravou by bolo zabezpečené, že sa:

  • Cesta ku každému súboru musí zadefinovať iba raz
  • V prípade prejdenia na novú verziu napr. jQuery stačí uraviť jedinú cestu k súboru
  • Minimalizuje sa priestor pre chyby spôsobené nedodaním všetkých závislostí

Ešte premýšľam nad API, čo sa ako má volať a taktiež aj ako sa má volať makro pre aplikovanie balíčku.

před 7 lety

zopper
Člen | 20
+
0
-

Vypadá to skvěle, akorát to nejsem schopný rozchodit… :(
Class \RM\PublicFileCollector\CssSimpleMinificator has not been found – přitom soubory jsou nahrané všechny a pokud v neonu změním class: \RM\PublicFileCollector\CssSimpleMinificator na nějakou jinou třídu, tak ta se načte (sice spadne o kus dál, ale až při pokusu o použití – načte se i \RM\PublicFileCollector\ImageReplacer).

Soubory jsem umístil do /app/components/HeaderControl/, je to verze z Nov 06, 2012, Nette je 2.0.6.

EDIT: Tak mě ještě napadlo zkusit ten název ručně přepsat na obou místech, i když vypadal absolutně stejně – a rozjelo se to. :-/ Mohl by to být nějaký netisknutelný znak?

Editoval zopper (7. 11. 2012 21:32)

před 7 lety

David Ďurika
Člen | 342
+
0
-

akurat sa mi nepaci to ze takto si rozne po slablonach bude ‚volat‘ tie css a js a casom stratis uplne prehlad o tom, ze kde co mas…
ja to riesim trochu inak a hlavne jednoduchsie https://forum.nette.org/…a-js-suborou

před 7 lety

romiix.org
Člen | 349
+
0
-

achtan napsal(a):

akurat sa mi nepaci to ze takto si rozne po slablonach bude ‚volat‘ tie css a js a casom stratis uplne prehlad o tom, ze kde co mas…
ja to riesim trochu inak a hlavne jednoduchsie https://forum.nette.org/…a-js-suborou

Myslím, že riešim problém komplexnejšie a lepšie (subjektívne podla mňa):

  1. V prípade „núdze“ je možné definovať súbory kdekoľvek cez službu.
  2. Definícia súborov pre frontend podla mňa patrí do šablóny.
  3. Tvoje riešenie nie je rovnako použiteľné v komponentách.
  4. Makro {cssContent} resp. {jsContent} sa tiež môže niekedy hodiť.
  5. Balíčky mám taktiež navrhnuté v ešte nezverejnenej verzií.

Každopádne si navrhol celkom jednoduché a použiteľné riešenie, ktoré však nebudem využívať lebo nerieši problém tak ako to vyhovuje mne:)

před 7 lety

romiix.org
Člen | 349
+
0
-

zopper napsal(a):

Vypadá to skvěle, akorát to nejsem schopný rozchodit… :(
Class \RM\PublicFileCollector\CssSimpleMinificator has not been found – přitom soubory jsou nahrané všechny a pokud v neonu změním class: \RM\PublicFileCollector\CssSimpleMinificator na nějakou jinou třídu, tak ta se načte (sice spadne o kus dál, ale až při pokusu o použití – načte se i \RM\PublicFileCollector\ImageReplacer).

Soubory jsem umístil do /app/components/HeaderControl/, je to verze z Nov 06, 2012, Nette je 2.0.6.

EDIT: Tak mě ještě napadlo zkusit ten název ručně přepsat na obou místech, i když vypadal absolutně stejně – a rozjelo se to. :-/ Mohl by to být nějaký netisknutelný znak?

Veľmi nepríjemný problém:( Vďaka za riešenie pre ostatných.
Žiaľ u mňa sa chyba neprejavuje tak neviem čo a ako mám opraviť.

před 7 lety

David Ďurika
Člen | 342
+
0
-

romiix.org napsal(a):

Každopádne si navrhol celkom jednoduché a použiteľné riešenie, ktoré však nebudem využívať lebo nerieši problém tak ako to vyhovuje mne:)

jasne kolko ludi tolko chuti :) mne zatial to moje riesenie vyhovuje, cas ukaze…

před 7 lety

romiix.org
Člen | 349
+
0
-

Nová verzia je vonku:)

Vďaka achtan -ovi a jeho príspevku som sa dokopal k dorobeniu podpory pre balíčky. Výrazne som sa inšpiroval jeho nastavovaním. Mnou navrhovaný spôsob bol dosť divoký a neprehľadný.

Čo je nové:
Definovanie balíčkov
common:
    parameters:
        csspath: %wwwDir%/style/css
        jspath: %wwwDir%/style/js
        webtemp: %wwwDir%/webtemp
        packages:
            jQuery:
                js:
                    - %jspath%/jquery-1.8.2.min.js
            netteForms:
                js:
                    - %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/js/netteForms.js
            jQueryUI:
                extends:
                    - jQuery
                css:
                    - %wwwDir%/libs/jquery-ui-1.9.1.custom/css/smoothness/jquery-ui-1.9.1.custom.min.css
                js:
                    - %wwwDir%/libs/jquery-ui-1.9.1.custom/js/jquery-ui-1.9.1.custom.min.js
            NiftyGrid:
                extends:
                    - jQueryUI
                    - netteForms
                css:
                    - %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/css/grid.css
                js:
                    - %wwwDir%/libs/Nette-extras/Niftyx-NiftyGrid-5163290/resources/js/grid.js
Inicializácia v PublicFileCollector
common:
    services:
        publicFileCollector:
            class: \RM\PublicFileCollector
            setup:
                - $csspath(%csspath%)
                - $jspath(%jspath%)
                - $webtemp(%webtemp%)
                - setPackages(%packages%)
Príklad použitia sablona-s-gridom.latte
{pfpack "NiftyGrid"}

Aby boli informácie pokope, vytvoril som wiki .

Editoval romiix.org (8. 11. 2012 15:40)

před 7 lety

enumag
Člen | 2128
+
0
-

Vypadá to jako hezký koncept, kterému chybí pár věcí: :-)

  1. Bylo by hezké mít to jako extension.
  2. Instalace pomocí Composeru.
  3. Podpora CSS preprocesorů a JS minifikace.

před 7 lety

romiix.org
Člen | 349
+
0
-

enumag napsal(a):

Vypadá to jako hezký koncept, kterému chybí pár věcí: :-)

  1. Bylo by hezké mít to jako extension.

Viem, ale zatiaľ som extension nepísal tak som to spravil ako štandardný addon. Vzhľadom na jednoduchosť inštalácie je to možno aj zbytočnosť. Beriem späť, prečítal som si odkazovaný článok znovu a súhlasím, že je to lepšie. Keď si nájdem trochu času, prerobím to.

  1. Instalace pomocí Composeru.

Zatiaľ to tu nie je žiadne „terno“, žiadny extra záujem, tak nemám na to dôvod. Ak vznikne požiadavka, vznikne balíček:)

  1. Podpora CSS preprocesorů a JS minifikace.

Podpora existuje a je dokumentovaná.

Editoval romiix.org (8. 11. 2012 18:17)

před 7 lety

Vojtěch Dobeš
Člen | 1317
+
0
-

Ej, to je psaní, to používat nebudu…

CompilerExtension vždycky zjednoduší zápis v configu a tudíž to s větší pravděpodobností i někdo zkusí použít :).

A ono to ani nemá Composer, tak to už vůbec nebudu zkoušet…

Je lepší se na to dívat opačně – nabídnout co nejlepší doplněk a doufat, že ho někdo použije. Ne čekat na reakce a de facto si nechat určovat, co má dělat, co má obsahovat… Co jiného je enumagův příspěvek, než „požiadavka“.

Myšleno samozřejmě v dobrém, doplňky tohoto typu jsou cenné zboží :).

Editoval vojtech.dobes (8. 11. 2012 18:39)

před 7 lety

romiix.org
Člen | 349
+
0
-

vojtech.dobes napsal(a):

Ej, to je psaní, to používat nebudu…

CompilerExtension vždycky zjednoduší zápis v configu a tudíž to s větší pravděpodobností i někdo zkusí použít :).

A ono to ani nemá Composer, tak to už vůbec nebudu zkoušet…

Je lepší se na to dívat opačně – nabídnout co nejlepší doplněk a doufat, že ho někdo použije. Ne čekat na reakce a de facto si nechat určovat, co má dělat, co má obsahovat… Co jiného je enumagův příspěvek, než „požadavka“.

Nedá inak než súhlasiť. O pár dní sa k tomu dúfam dostanem a napravím nedostatky.

před 7 lety

enumag
Člen | 2128
+
0
-

vojtech.dobes: Neřekl jsem ani jedno ani druhé. A řeknu ti rovnou že to vyzkouším i bez composeru a zas tak moc psaní mi to nepřijde. A pokud jde o ty 3 body co jsem psal tak je to pouze konstatování, že mi tam tyto funkce chybí. Tzn. nemám problém si to forknout a dopsat sám až to budu potřebovat.

před 7 lety

Vojtěch Dobeš
Člen | 1317
+
0
-

enumag Však já tě ani necitoval, odpovídal jsem čistě romiixovi – omlouvám se, pokud to vyznělo, že si tě beru do úst.

před 7 lety

enumag
Člen | 2128
+
0
-

@romiix: K tomu Composeru, dle mého názoru by úplně stačilo přidat soubor composer.json, vytvářet balíček na packagist mi nepřipadá podstatné. ;-)

@vojtech.dobes: Hlavně že zmiňuješ „enumagův příspěvek“, že? Ale dobře, omluva se přijímá. S tím, že by si autor neměl nechat diktovat co tam bude a nebude naprosto souhlasím. Pouze jsem podal nějaké návrhy, což většina autorů uvítá. Zda je opravdu použije je ovšem čistě na něm – případně může odpovědět „pošli pull request“, což je též v pořádku.

Editoval enumag (8. 11. 2012 19:07)

před 7 lety

romiix.org
Člen | 349
+
0
-

Tak som to snáď nejak zvládol.

GitHub: https://github.com/…eaderControl
Packgist: https://packagist.org/…eadercontrol
Registrácia: \RM\PublicFileCollectorExtension::register($configurator);

Niekto by to mohol otestovať;)

před 7 lety

romiix.org
Člen | 349
+
0
-

@vojtech.dobes: @enumag: Akékoľvek pripomienky vedúce k môjmu vlastnému zdokonaleniu prijímam bez problémov a s radosťou:)

Ako sa tak pozerám do kódu, čaká ma refaktoring. Od prvej verzie sa to dosť rozvinulo.

před 7 lety

Vojtěch Dobeš
Člen | 1317
+
0
-

@romiix.org Good job! :)

před 7 lety

Patrik Votoček
Člen | 2249
+
0
-

Pár postřehů:

  1. na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.
  2. „PublicFileCollector“ je ale příšernej název to bude překlepů
  3. umí to zkopírovat i obrázky které jsou linkované uvnitř CSS souborů?

před 7 lety

romiix.org
Člen | 349
+
0
-

Patrik Votoček napsal(a):

Pár postřehů:

  1. na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.

Rozhodne súhlasím.

  1. „PublicFileCollector“ je ale příšernej název to bude překlepů

Súhlasím, ale ešte som nevymyslel lepší názov.

  1. umí to zkopírovat i obrázky které jsou linkované uvnitř CSS souborů?

Áno:

publicFileCollector:
    addCssCompilator:
        - @imageReplacer
services:
    imageReplacer:
        class: \RM\PublicFileCollector\ImageReplacer
        setup:
            - $webtemp(%wwwDir%/webtemp)

před 7 lety

Patrik Votoček
Člen | 2249
+
0
-

romiix.org napsal(a):

Áno …

publicFileCollector:
  addCssCompilator:
      - @imageReplacer
services:
  imageReplacer:
      class: \RM\PublicFileCollector\ImageReplacer
      setup:
          - $webtemp(%wwwDir%/webtemp)

Tohle by imho mohla umět ta extension s nějakou lepší syntax.

Btw napadla mě další věc na většině webů mám 2 druhy CSS/JS.

  1. je společný pro všechny stránky
  2. liší se stránku od stránky

bylo by super kdyby to teda umělo vygenerovat 2 soubory jeden společný (uživateli se nakešuje) a jeden pro každou stránku. Jde tohle nějak?

před 7 lety

romiix.org
Člen | 349
+
0
-

Patrik Votoček napsal(a):

romiix.org napsal(a):

Áno …

publicFileCollector:
    addCssCompilator:
        - @imageReplacer
services:
    imageReplacer:
        class: \RM\PublicFileCollector\ImageReplacer
        setup:
            - $webtemp(%wwwDir%/webtemp)

Tohle by imho mohla umět ta extension s nějakou lepší syntax.

Kompilátory sú niečo extra, navyše a môže ich byť viac, dá sa pridávať vlastné atď.

Je pravdepodobné, že tento kompilátor by chcel každý, ale napr. ja využívam aj distribuovaný CssSimpleMinificator ale niekto iný by ho nemusel chcieť. Preto som sa priklonil k tomu, že defaultne nebude žiadny a ak niekto nejaký chce tak si ho vcelku jednoducho pridá.

Alebo si to myslel tak, že by som vytvoril ďalšie rozšírenie \RM\CssSimpleMinificatorExtension::register($configurator); ktoré by ho pridalo samo?

Btw napadla mě další věc na většině webů mám 2 druhy CSS/JS.

  1. je společný pro všechny stránky
  2. liší se stránku od stránky

bylo by super kdyby to teda umělo vygenerovat 2 soubory jeden společný (uživateli se nakešuje) a jeden pro každou stránku. Jde tohle nějak?

Teraz to neide, ale je to dobrý nápad. Ako najlepšie riešenie sa mi javí zlučovať ich na úrovni balíčkov. Tzn. nadefinuješ si balíček Frontend a balíček napr. Contact a do hlavičky sa pošlú súbory frontend.<hash>.css a contact.<hash>.css.

Editoval romiix.org (9. 11. 2012 10:55)

před 7 lety

romiix.org
Člen | 349
+
0
-

Patrik Votoček napsal(a):

Pár postřehů:

  1. na packagist.org se to jmenuje „headercontrol“ ale extension se registruje jako „PublicFileCollectorExtension“ sjednotil bych to.
  2. „PublicFileCollector“ je ale příšernej název to bude překlepů

Pôvodne som to mal rozdelené na dve samostatné knižnice, HeaderControl a PublicFileCollector. Potom som sa rozhodol, že aj tak to používam spolu, tak som ich zlúčil.

Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.

  • HeaderControl vzhľadom na existenciu HeaderControlu od Ondřeja Mirtesa premenujem na Header.
  • Príšerne dlhý názov PubliFileCollector nazvem skratkou PFColl.
  • Header bude k svojej funkčnosti vyžadovať PFColl.
  • PFColl bude nezávislá knižnica.
  • PFColl bude pri registrácií definovať aj všetky pribalené kompilátory, ale predvolene budú vypnuté.

Pribudnú nové možnosti nastavenia:

PFColl:
    cssSimpleMinificator: true // default false, aktivovanie kompilátoru cssSimpleMinificator
    mergePackages: true // default false, zapnutie spájania súborov na úrovni balíčkov

K aplikovaniu zmien sa dostanem asi až o pár dní, takže poprosím o prípadné pripomienky čím skôr. Vôbec netvrdím, že navrhované úpravy sú 100% správne:)

před 7 lety

Vojtěch Dobeš
Člen | 1317
+
0
-

Co takhle AssetsCollector?

před 7 lety

romiix.org
Člen | 349
+
0
-

vojtech.dobes napsal(a):

Co takhle AssetsCollector?

Ok, je to asi samopopisnejší názov.

před 7 lety

Patrik Votoček
Člen | 2249
+
0
-

romiix.org napsal(a):

Je pravdepodobné, že tento kompilátor by chcel každý, ale napr. ja využívam aj distribuovaný CssSimpleMinificator ale niekto iný by ho nemusel chcieť. Preto som sa priklonil k tomu, že defaultne nebude žiadny a ak niekto nejaký chce tak si ho vcelku jednoducho pridá.

Alebo si to myslel tak, že by som vytvoril ďalšie rozšírenie \RM\CssSimpleMinificatorExtension::register($configurator); ktoré by ho pridalo samo?

Ne myslel jsem to tak aby jsi využil naplno možnosti compiler extension.

assets:
    setup: # tohle je jenom ukazka nevim co presne tam ma byt
        csspath: %appDir/assets/css%
        jspath: %appDir/assets/js%
        webtemp: %wwwDir%/assets

    css:
        - someMyCssFile.css

    packages:
        jQuery:
            js: %jspath%/jquery-1.8.2.min.js

    cssCompilers:
        imageReplacer: true # internal
        - \RM\PublicFileCollector\ImageReplacer() # external (3rd part)

Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.

To nedělej! Nevidím v tom smysl. Nedokážu si představit že by to kdy někdo používal samostatně.

před 7 lety

romiix.org
Člen | 349
+
0
-

Patrik Votoček napsal(a):

Ne myslel jsem to tak aby jsi využil naplno možnosti compiler extension.

Myslím, že som to spravil veľmi podobne ako si to navrhol.
>

Teraz s odstupom času som dospel k tomu že oba doplnky naspäť oddelím.

To nedělej! Nevidím v tom smysl. Nedokážu si představit že by to kdy někdo používal samostatně.

Neskoro. Už som to oddelil.

https://github.com/…atyus/Header

https://github.com/…etsCollector

Fakt si nie som 100% istý tým že je to správne, ale k tomu som zatiaľ dospel. Vychádzal som z toho, že samotný Header je použiteľný aj sám na generovanie hlavičiek. Teraz som si uvedomil, že vlastne sám o sebe nemá extra zmysel, pretože každý bude chcieť v hlavičke definovať aj CSS a JS.

Najväčší problém pr myšlienke ponechania tých dvoch doplnkov v jednom som mal s namespace-ami (čo a ako nazvať, ako do seba zanoriť), ale to bol asi slabý dôvod.

Musím si to ešte nechať uležať v hlave.

Nejaké nápady ohľadom spojenia, namespace-ov (aj už použitých), doplnku alebo pod.?

před 7 lety

romiix.org
Člen | 349
+
0
-

Dlho som si to nenechal uležať:)

Teraz som si uvedomil, že vlastne sám o sebe nemá extra zmysel, pretože každý bude chcieť v hlavičke definovať aj CSS a JS.

Z tohoto dôvodu som to teda celé znovu zlúčil a je z toho jeden (dúfam dobre použiteľný) komplexný doplnok.

Dokumentácia: https://addons.nette.org/cs/header

GitHub: https://github.com/…atyus/Header

Packagist: https://packagist.org/…es/rm/header (netestované)

Doplnok je použitý v priebežne vytváranom projekte, takže by mal pracovať správne.