Při velkém využití javascriptu na webových stránkách se může stát, že na pomalejších připojeních se prodlužuje doba načítání takové stránky. Jednou z možností snížení velikosti přenesených dat je tzv. minimalizace souborů se javascriptem.

Při hledání způsobu jak zmenšit velikost souborů s javascriptem jsem narazil na program YUI compressor. Ten umožňuje minimalizaci souborů s CSS a javascriptem. Minimalizace spočívá v zachování původní funkcionality, kterou se snaží uložit na co nejmenší počet bytů. Toho je docíleno odstraněním tzv. bílých znaků, tedy mezer, tabulátorů a odřádkování a dále změnou názvů proměnných za symboly s 1-3 znaky všude, kde je to možné a bezpečné.

Ovšem při neustálém vývoji není spouštění tohoto programu po každém buildu velice praktické. Hledal jsem proto způsob jak tento proces integrovat do buildovacího procesu mavenu. Narazil jsem na tento plugin, který využívá již zmíněného kompresoru a jako každý plugin mavenu umožňuje rozsáhlou konfiguraci. Definice v pom.xml:


<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupid>net.sf.alchim</groupid>
      <artifactid>yuicompressor-maven-plugin</artifactid>
      <version>0.7.1</version>
      <executions>
        <execution>
          <goals>
            <goal>compress</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <encoding>utf-8</encoding> 
        <nosuffix>true</nosuffix>
      </configuration>
    </plugin>
    ...
  </plugins>
  ...
</build>


V deklaraci je možné nastavit spoustu parametrů, viz stránky pluginu. I tak zde ale zmíním ty nejdůležitější. Prvním je nastavení kódování souborů, což je důležité pokud javascript obsahuje diakritiku. Nastavuje se to parametrem:


<encoding>utf-8</encoding>

Jako defaultní by mělo být UTF-8, ale to nám nefungovalo úplně stoprocentně a proto bych doporučil tento parametr nevynechat, ale explicitně nastavit správné kódování.

Druhým je:


<nosuffix>true</nosuffix>


defaultní hodnota je false a v tom případě je na konec komprimovaných souborů přidána koncovka -min. Například util.js se změní na util-min.js. Pokud je ale tento atribut nastaven na true, tak se jména souborů nemění.

Dalším je:


<jswarn>false</jswarn>


defaultní hodnotou je true a znamená to, že budou do konzole vypsány všechny varování o potenciálních chybách v javascriptu. Pokud používáte nějaký javascriptový framework (např. jQuery nebo Prototype), tak těchto varovných hlášení může být celá řada.