Nette minificator/compactator

#1 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Nette minificator/compactator

Diskuse k Nette Minifier

Podrobnosti a download v Nette/Extras/Nette-minifier


Ahoj,

protože jsem dělal pár úprav do vlastní kopie Nette a chtěl jsem ji „zabalit“ do minified verze a oficiální nástroj jsem nenašel, rozhodl jsem se udělat vlastní „minificator“. Musím samozřejmě zmínit, že jsem vycházel z ukázky na http://phpfashion.com/…-php-skripty . Mám ho zatím upraven přímo pro Nette, ale v podstatě jde jen o to, jak získat seznam souborů, jinak je víceméně univerzální ;) není to až tak úplně pravda ;)

Testováno na Nette 0.9 pro PHP 5.2 i pro PHP 5.3 :)

Enjoy ;)

Editoval DocX (21. 9. 2009 15:35)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#2 před 3 lety

sodae
Nette Evangelist
Registrovaný: 8. 1. 2009
Příspěvky: 280

Re: Nette minificator/compactator

Dobrá a pěkná práce ! Snad se David již pochlubí s oficiálním :)

Editoval sodae (18. 8. 2009 23:57)


Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítání

Twitter: http://twitter.com/MartinSadovy

 

#3 před 3 lety

Honza Kuchař
Moderator
Registrovaný: 12. 8. 2007
Příspěvky: 1588

Re: Nette minificator/compactator

Do extras s tím! (do sekce Nástroje)

 

#4 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

honzakuchar napsal(a):

Do extras s tím! (do sekce Nástroje)

To je to skutečně tak dokonalé?

Ok v průběhu dneška to tam hodím ;) Už to tam je: Nette Minifier

BTW: Teď mi to došlo, nemělo by to být správně minifier než minificator? xD

Editoval DocX (20. 9. 2009 11:26)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#5 před 3 lety

ic
Nette guru
Registrovaný: 28. 3. 2009
Příspěvky: 306

Re: Nette minificator/compactator

Dělat nějaké úpravy přímo v nette musí být nevděčné když každý druhý den vychází nová verze ne?

 

#6 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

ic napsal(a):

Dělat nějaké úpravy přímo v nette musí být nevděčné když každý druhý den vychází nová verze ne?

No to vychází, ale moje úpravy v něm samozřejmě nejsou. Updaty ale provádím, zatím se o všechno postaral svn diff sám ;)

PS: Jinak jsem minifier dělal i z vlastní zvědavosti, jestli to dokáži :)

Editoval DocX (20. 8. 2009 19:45)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#7 před 3 lety

na1k
Nette guru
Registrovaný: 18. 2. 2008
Příspěvky: 277

Re: Nette minificator/compactator

Určitě raději „minifier“ :-)

(důkaz místo slibů)

Jinak práce pěkná, ale vhodná opravdu jen pro vás, co si Nette ohýbáte :-p

 

#8 před 3 lety

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5835

Re: Nette minificator/compactator

DocX napsal(a):

Mimochodem, nechi se chlubit, ale můj minificator generuje soubor o ~15kB menší než oficiální Davidova verze v balení Nette.

Zkus tam ještě přihodit šablony z adresáře Debug.templates ;)

Ale dobrá práce!

 

#9 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

David Grudl napsal(a):

Zkus tam ještě přihodit šablony z adresáře Debug.templates ;)

Ale dobrá práce!

No jo :) Toho jsem si nevšiml. Minified verzi používám jen v produkčním prostředí, kde se laděnka neukazuje. Každopádně zkusim se na to časem kouknout.

//EDIT: už vim jak na to :)

Editoval DocX (20. 8. 2009 21:56)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#10 před 3 lety

Honza Kuchař
Moderator
Registrovaný: 12. 8. 2007
Příspěvky: 1588

Re: Nette minificator/compactator

DocX napsal(a):

honzakuchar napsal(a):

Do extras s tím! (do sekce Nástroje)

To je to skutečně tak dokonalé?

Nemusí to být dokonalé. (nic není dokonalé) Stačí když to bude fungovat a někdo se v tom vyzná. ;) Kdyby jsi to tady nechal, tak to tady na fóru asi za chvíli zapadne. A už to nikdo nenajde.

 

#11 před 3 lety

Blizzy
Člen
Registrovaný: 22. 2. 2008
Příspěvky: 185

Re: Nette minificator/compactator

Pár komentářů v kódu by neuškodilo. :)

btw. v extras nefunguje link na stažení.

 

#12 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Blizzy napsal(a):
btw. v extras nefunguje link na stažení.

Už by to mělo jít ;)

Editoval DocX (21. 8. 2009 20:59)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#13 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Po dlouhé době jsem se dostal znovu k Nette Minifieru. Opravil jsem jedinou známou chybu a vylepšil několik věcí:

  • zabaluje šablony pro Nette\Debug
  • celý kód jsem přepsal do třídy
  • ke kódu jsem připsal pár komentářů
  • jediná verze pro obě PHP 5.3 a 5.2 varianty Nette

Zkoušel jsem to teď na všech variantách Nette 0.9.1. Tu pro PHP 5.3 jsem zkusil v provozu i na několika vlastních aplikacích.

Stahovat můžete v extras


Jediné co nemohu vyzkoušet je jak skript funguje pod PHP 5.2 (mám totiž všude jen 5.3).

Mohl bych někoho poprosit, ať si stáhne zipy s nejnovějším Nette a zkusí je minifikovat a otestavat spuštěním v PHP? Díky.

Editoval DocX (19. 9. 2009 22:59)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#14 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Najde se někdo kdo zkusí minify.php pod PHP 5.2? Díky

Editoval DocX (21. 9. 2009 13:31)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#15 před 3 lety

vlki
Nette guru
Registrovaný: 30. 6. 2008
Příspěvky: 239

Re: Nette minificator/compactator

Tak jsem to vyzkoušel pod PHP 5.2.9.

Log:

$> php minify.php [...]
Parsed files: 204
Minified version saved as loader.minified.php

$> php loader.minified.php

Fatal error: Cannot redeclare class ArgumentOutOfRangeException in loader.minified.php on line 430

Zmenšoval jsem revizi Nette 9668a2a pro PHP 5.2.

Minifikované Nette: loader.minified.php52.zip

 

#16 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Díky za report. Tak jsem na to koukal a něco jsem upravil.

Nejdřív jsem myslel, že jsi na Windows, kde jsou lomítka v adrese opačně a hledal jsem, kde by to mohlo dělat problém. Tak jsem všude přidělal realpath (někde už byl). Ale pak jsem si všiml, že to co si napsal vypadá jako Linux shell :o) Nicméně chyba se jevila jako špatné rozpoznávání/ukládání již minifikovaných souborů (v Nette je celkem něco kolem 140).

Pak jsem zjistil, že si vlastně můžu PHP 5.2 zkompilovat a spustit bez instalace, takže jsem to mohl vyzkoušet. Nová verze funguje u mě v pořádku. Zkusil jsem původní (tu kterou jsi ty zkoušel) a ta u mě vygenerovala také správný kód. Tak nevím, kde pak byla chyba.

Přidělal jsem proto volbu --debug, která vypíše snad dostatek informací, aby se dalo zjistit kde je chyba. Tak jestli tě můžu ještě poprosit, aby jsi to zkusil s touto volbou (raději použij php minify.php ... > minify.log), pokud to tedy bude stále generovat špatný kód.

Editoval DocX (21. 9. 2009 0:28)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#17 před 3 lety

vlki
Nette guru
Registrovaný: 30. 6. 2008
Příspěvky: 239

Re: Nette minificator/compactator

Sice log vypadá jako shell, ale byla to command line win7. Jen jsem tak příkazy z konzole zvyklý psát ;)

Každopádně teď už minifikace dopadla úspěšně. Debug log ani posílat nebudu, když to nevykazuje žádné anomálie. Spacifikovalo to nějakých 147 souborů a minifikovaný kód vyhovuje pravidlům php 5.2.9.

Pěkná práce!

Pár nápadů:

  • odstranit ty komentáře obsahující název souboru, který se v „balíčku“ nachází. Nepředpokládám, že by to chtěl někdo zpětně rekonstruovat – stejně by to bylo bez komentářů. Nebo mají nějaký účel, který nevidím?
  • minifikovat i šablony. Třeba takové CSS je zbytečně roztahané. Nějaká spolupráce s WebLoaderem?;)

Třeba bys s tím trumfl i ten Davidův nástroj:)

 

#18 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

vlki napsal(a):

Pěkná práce!

Díky :)

  • odstranit ty komentáře obsahující název souboru, který se v „balíčku“ nachází. Nepředpokládám, že by to chtěl někdo zpětně rekonstruovat – stejně by to bylo bez komentářů. Nebo mají nějaký účel, který nevidím?

Tohle tam je jen při zapnutém --debug.

  • minifikovat i šablony. Třeba takové CSS je zbytečně roztahané. Nějaká spolupráce s WebLoaderem?;)

Třeba bys s tím trumfl i ten Davidův nástroj:)

Asi by to nějak šlo. Davidův minifier bych tím jistě trumfl, protože on tam má také jen zkopírované to, co je v původních souborech. Otázka ale je, jestli by to už nešlo chápat jako změnu chování Nette.


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#19 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Napadá mě pár TODO, které by se mohli ještě časem udělat. Nevím, ale kdy a jestli se k tomu dostanu (může to ale zkusit někdo jiný :o)

  • Přidělat automatickou kontrolu minifikovaného souboru (klasicky přes include). K tomu je ale potřeba:
    • Odstranit require Loaders/NetteLoader.php a zjišťovat seznam souborů normálně z FS.
    • Verzi Nette lze zjistit parsováním souboru Framework.php (ale ne includem)
  • Přidat možnost komprimace „vestavěných“ šablon pro laděnku.
  • Možná časem trochu zobecnit a udělat možnost minifikace např. presenterů. (Jak vyřešit, když se používá RobotLoader?, nepředvídatelné includování?, apod.)

Napadá někoho něco dalšího? :)

PS: Mohl bych požádat někoho, kdo má tu moc, změnit title vlákna na „Nette Minifier“? Případně přesunutí vlákna do komponent, jestli je to vhodné. Dík.

Editoval DocX (21. 9. 2009 10:26)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#20 před 3 lety

Tomik
Nette Evangelist
Registrovaný: 20. 3. 2005
Příspěvky: 566

Re: Nette minificator/compactator

DocX napsal(a):

Mohl bych poprosit …

Sice nejsem žádný z původních autorů příspěvků, ale diskuzi jsem na Tvoji žádost promazal…

 

#21 před 3 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

Jenom tak čistě ze zvědavosti (a taky kvulí prostému uložení zde na wiki):

Používáte to někdo? :-)


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#22 před 3 lety

enoice
Nette guru
Registrovaný: 1. 9. 2006
Příspěvky: 333

Re: Nette minificator/compactator

já se to brzy chystám použít :) zatím jsem se k tomu ještě nedostal :)

 

#23 před 3 lety

Matúš Matula
Člen
Registrovaný: 3. 9. 2009
Příspěvky: 167

Re: Nette minificator/compactator

no ja som to dnes pouzil a vyzera to, ze to slape. Dobra robotka ;-)

 

#24 před 2 lety

HosipLan
Nette guru
Registrovaný: 1. 6. 2009
Příspěvky: 2637

Re: Nette minificator/compactator

Já jsem to zrovna chtěl použít, ale nesežralo mi to dibi :(

škoda, doufal jsem že to bude trochu víc univerzální :(


Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHubCMS Kdyby

Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni

 

#25 před 2 lety

DocX
Člen
Registrovaný: 1. 5. 2009
Příspěvky: 170

Re: Nette minificator/compactator

HosipLan napsal(a):

Já jsem to zrovna chtěl použít, ale nesežralo mi to dibi :(

škoda, doufal jsem že to bude trochu víc univerzální :(

No tak dělal jsem to na Nette, ale myslim že by nebylo složité si to přepsat aby to vzalo i dibi.

Tam je asi hlavní to jak to získa seznam souborů a to, že v každém souboru smí být jen jedna třída a mít requiry na potřebný třídy.


Je jen málo věcí, které opravdu fungují… Jednou z nich je Nette.

PS: DocX mi ukradl MS. Bohužel, stále nejsem milionář :(

 

#26 před 2 lety

HosipLan
Nette guru
Registrovaný: 1. 6. 2009
Příspěvky: 2637

Re: Nette minificator/compactator

Vím že to není složité :) Jenom jsem doufal že dibi to sežere taky, toš až bude chvilka tak si to vylepším :)


Neptej se, jestli se můžeš ptát | Blog | Twitter | GitHubCMS Kdyby

Nette Jabber Room – nette@conf.netlab.cz , všichni jste vítáni

 

#27 před 2 lety

Honza Marek
Moderator
Registrovaný: 31. 3. 2007
Příspěvky: 1632

Re: Nette minificator/compactator

Dibi sem tam má víc tříd v jednom souboru.

Online

 

#28 před 2 lety

BigCharlie
Člen
Registrovaný: 13. 11. 2008
Příspěvky: 195

Re: Nette minificator/compactator

Zkoušel jsem dnes minifier a neuspěl jsem – hned po spouštění jsem narazil na hlášku, že není možné najít třídu AutoLoader (v souboru NetteLoader). Kdepak dělám chybu?

 

Zápatí