Komentáře k článku

Minifikace JavaScriptu

Hledáte vhodný zmenšovač JS kódu a napadá vás, že by možná nejjednodušší bylo napsat si něco vlastního, než přizpůsobovat svůj toolchain některému z existujících zmenšovačů? Nebo že se vám nelíbí licence, pod kterou je zmenšovač šířen? Možná vám následující článek ušetří mnoho hodin vlastní práce!

Zpět na článek

24 komentářů k článku Minifikace JavaScriptu:

    1. blizzz

      Re: online nástroje

      ja pouzivam vlastny nastroj postaveny nad http://ajaxmin.codeplex.com/ minifier je normalny exac, ktory nacitava cesty z Xml suboru(RIA.pro­ject), kde mam zadefinovane ktore subory a kniznice ma JS projekt obsahovat. Okrem toho ma minifikator podporu externych modulov takze sa automaticky kompiluju subory s priponou coffee do JS atd atd, ma to aj podporu cachovania takze sa kompiluju len tie subory ktore som zmenil, nakoniec mi to vypluje jeden skomprimovany JS subor. Licencia minifieru ma nezaujima pretoze pred nasadenim aplikacie na server exac jednoducho vymazem.

  1. Knyttl

    Zachování Copyright

    Jedinou nevýhodou JsShrinku je nemožnost zachovat copyright commentáře – nehodí se na slučování 3rd party pluginů do jednoho souboru (což konkurenční nástroje umožňují. Mít tuhle vlastnost, tak je dokonalý – proč mít obrovský ClosureCompiler, když stačí pár řádků, že.

    1. Jakub VránaAutor příspěvku

      Re: Zachování Copyright

      „Copyright komentáři“ máte na mysli /*! ... */? Možná bych jejich podporu přidal, implementačně by to bylo triviální.

      Nicméně je potřeba říct, že Google Closure Compiler považuji za lepší nástroj po všech stránkách, takže pokud ho můžete použít, tak bych se tomu určitě nebránil.

      1. Pepca

        Re: Zachování Copyright

        Nejen /*! … */, ale prostě první komentář v souboru. Co jsem si všimnul, většina kódů tam ten vykřičník nemá, všichni ale dávají copyright na začátek.

  2. František Kučera

    Humor vs. licence

    Legrace a software k sobě neodmyslitelně patří – např. vtipné komentáře v kódu, chybové a jiné hlášky, velikonoční vajíčka. Ale licence jsou relativně vážná věc. Ona ta poznámka, že software se smí používat jen pro dobro a ne zlo, zní sice nevinně, ale je velmi nebezpečná – nikdy nevíš, kdy autorovi rupne v bedně a začne se s tebou soudit, že účel, pro který program používáš, není dostatečně dobrý a třeba mu dá i nějaký soudce zapravdu. Je zbytečné a hloupé dávat do licencí takové poznámky a ještě hloupější je vytvářet si na takovém softwaru závislost.

    1. Martin Malý

      Re: Humor vs. licence

      Pokud si místo „dobro“ a „zlo“ doplníš „otevřený“ a „proprietární“, tak máš GPL jak vyšitou. A máš k tomu i stovky filosofických výkladů, co je přesně v tomto pojetí „dobré“ a co „zlé“. Sám jsi jich několik napsal, že?

      Ale v jednom máš pravdu: Je hloupé si na takovém software vytvářet závislosti a po čase třeba zjistit, že o osudu svého SW nerozhoduješ ty sám, ale nějaká komunita a její názor na to, co je „správné“… ;)

        1. fish

          Re: Humor vs. licence

          a ty mas samozdrejme pravdu, tuhle hlasku vetsina lidi „miluje“, ale to uz jsi zajiste zjistil:)

  3. syntax

    UglifyJS

    Zajímalo by mě porovnání s UglifyJS. I přesto že není příliš známý, dosahuje jen o málo horších výsledků než Closure v podstatně kratším čase a bez magie. UglifyJS používají například Rails (ve výchozí konfiguraci v gemu Uglifier).

    Je fakt že oproti JsShrink je budování AST trochu jiný kalibr, každopádně doporučuju se na tento projekt aspoň podívat.

  4. kurkuma

    GCC + DEP

    Ja pouzivam Google Closure Compiler nasledovany Dean Edwards packerem.

    Myslim, ze by byl mozna dobry i clanek o preprocessorech (na JS a CSS), jestli tady nejaky vubec nekdo pouziva. Ja napr. pouzivam obycejny Ceckovy preprocessor a nemuzu si to vynachvalit. At uz jde o slucovani souboru do jednoho souboru (obyc. #include) a samozrejme makra – jednim parametrem potom napr. odstranim uplne vsechny debugovaci funkce z kodu, takze dany skript je potom mensi a pod. U CSS to same.

    1. Oldis

      Re: GCC + DEP

      Ja si upravil Less pro php, a jsmin pro js. preprocesory mimo php nepouzivam z toho duvodu ze mam v configuraci ozanceno co je jen debug, a tedy na ostrem webu se jiz tyto do kompilatu nepridavaji. kompiluje se jen jednou, na vyvojovem/debug servru se kompiluje vzdy, na ostrem jen kdyz chybi pack.

  5. Rekurze

    Hmmm

    „Hledáte vhodný zmenšovač JS kódu a napadá vás, že by možná nejjednodušší bylo napsat si něco vlastního, než přizpůsobovat svůj toolchain některému z existujících zmenšovačů?“

    Ano!

    (Proc potom pouziva jsshrink?)

  6. Michal

    Google Closure compiler

    Mel jsem s minifikatory problem az do doby nez jsem narazil na GCC. Vetsinou slo o chyby ve starsich IE vzhledem k memu js kodu.
    s GCC se mi to za pul roku nestalo a navic pridava x zajimavych veci navic.
    Jedna z nich je preklad nazvu promennych tak, ze z nich postupne nadelava a, b, c …. V pripade ze mate promennou lokalni pouze vuci danemu kontextu (napriklad v metode), tak ji prelozi, ostatni nechava tak, aby nenarusil funkcnost.

    V pripade ortodoxniho prekladu (volitelna moznost) navic umi prekladat i nazvy trid a dalsi veci, ale k tomu je treba dodrzovat zasady, ktere ja v mem js dodrzene nemam, takze mi vysledny js hazi chyby – pokud bych to vyresil, byl by kod jeste mensi.

    Na jednom projektu mam pomerne dost javascriptu, mam ho organizovanej do cca 30 souboru, ktere se pri deploy na produkci v ramci postdeploy tasku bali do jednoho, ten se potom prozene timhle GCC a jeste se hodi do gz, aby si to nemusel resit server pri kazdem pozadavku.
    Z puvodnich 30 souboru, ktere maji dohromady cca 1.1MB je asi 400kb gz, coz predcilo vsechna ma ocekavani.
    Zjistil jsem ze GCC ty promenne a pripadne dalsi veci preklada tak, aby mely co nejlepsi efekt pri pripadnem dalsim pakovani (co nejmin ruznych pismen atd…).

    Pokud byste o tom premysleli, reste to urcite pres lokalni jar jako je to popsano tady https://developers.google.com/closure/compiler/docs/gettingstarted_app .
    Online sluzby maji limity myslim nekde kolem 20-30 prelozenych souboru za hodinu, posilat to pokazde na sluzbu o ktere navic nevite jestli bude zrovna ready se mi zda dost zbytecny a nesmyslny.

    Nebojte se toho, pracuje se s tim krasne a je to spolehlive.
    Doporucuju vsem.

    1. Jakub VránaAutor příspěvku

      Re: Google Closure compiler

      Souhlasím, Google Closure Compiler také považuji za nejlepší současný nástroj. Já jsem při kompilaci Admineru nechtěl záviset na Javě ani na online připojení. Navíc z JsMinu jsem odešel kvůli licenčním problémům, tak jsem je nechtěl riskovat i u dalšího nástroje.

      Těch 400 kB minifikovaného gzipu z původních 1.1 MB se mi zdá nějak strašně moc, vždyť takovýhle poměr mívá samotný gzip. Třeba jQuery se z 248 kB zdrcne na 32 kB.

        1. Aichi

          Re: Google Closure compiler

          Posilat ruzne GZipovany JS je prasecina. Jaky duvod mas k tomu, aby to nedelal za tebe server? Mas ho pretizeny? Je lepsi to nechat na serveru z toho duvodu, ze soubor se nakesuje v prohlizeci a pak se uz stahovat nemusi – usetris na prenosu tak jako tak, ale po kazdem pristupu se musi v pameti pomoci JS rozbalit a to zdrzuje daleko vic.

          1. Michal

            Re: Google Closure compiler

            Nevim co resis. V mem pripade si browser rekne GET blabla.js, server se mrkne na umisteni, zjisti, ze vedle blabla.js ma polozenej blabla.js.gz, tak se neobtezuje s packovanim za letu a vrati ten pripravenej. Datum modifikace se nemeni. Na to je na nginx takovej plugin..

  7. bckp

    JavaScript Utility Version 3

    Doporučuju se podívat taky na online utilitku napsanou celou v JS, používám ji již nějaký ten pátek a příjde mi, že její výsledky předčí vše ostatní, navíc jako jedna z mála nemá problém minimalizovat i prototype tak, aby fungoval…

    http://jsutility.pjoneil.net/

    1. Jakub VránaAutor příspěvku

      Re: JavaScript Utility Version 3

      Jak si to poradilo se špeky z článku:

      a++ + +2; chyba
      8 / / .* / / 2; chyba
      /[/]/; OK

      JsShrink má mimochodem taky verzi napsanou celou v JS.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3617