2013-05-25 20 views
18

Mam 100s plików javascript wewnątrz hierarchii folderów i chcę dwa zestawy danych wyjściowych. jednym jest posiadanie połączonej wersji do celów debugowania, a druga to wersja concat + minfy. Obecnie korzystam z poniższej wtyczki, ale w tym muszę podać każdy plik, który muszę zminimalizować. Szukam wtyczki, która potrzebuje tylko folderu nadrzędnego i spełnia powyższe warunki.Wtyczka Maven do konkatowania i minimalizowania javascript

<groupId>com.samaxes.maven</groupId> 
<artifactId>minify-maven-plugin</artifactId> 
<version>1.7</version> 

Odpowiedz

32

YUI compression maven plugin pracował dla mnie. Pokażę, co zrobiłem, aby działało.

  • Aby złączyć wszystkie pliki js użyłem agregacji.

Szczegóły użytych elementów.

  • preProcessAggregates - Aby proces agregacji przed minifikacji.
  • agregacje - Aby zebrać wiele zasobów w hierarchii folderów do jednego pliku.
  • agregacja - Wewnątrz agregacji rodziców może być wiele elementów agregacji.
  • insertNewLine - Wstawianie nowej linii po każdym pliku eof, podczas konkatenacji/agregacji plików.
  • inputDir - Katalog nadrzędny, w którym będą wyszukiwane pliki dla konkatenacji/agregacji.
  • sourceDirectory - Katalog, w którym pliki będą wyszukiwane w celu zminimalizowania.
  • outputDirectory - Katalog, w którym zostanie umieszczona zminimalizowana produkcja.
  • nosuffix - Jeśli ustawione na true, to wtyczka nie doda "-min" do minified pliku.

Istnieją 2 rodzaje <exclude> własności: -

  • Pierwszy jest częścią agregatu, co w zasadzie wyklucza pliki z agregacji.
  • Po drugie jest częścią wtyczki do wykluczania plików z minifikacji.

kod wtyczki: -

<plugin> 
    <groupId>net.alchim31.maven</groupId> 
    <artifactId>yuicompressor-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
    <preProcessAggregates>true</preProcessAggregates> 
    <aggregations> 
     <aggregation> 
     <insertNewLine>true</insertNewLine> 
     <output>${basedir}/target/single.js</output> 
     <inputDir>${basedir}/src/main/resources/js</inputDir> 
     <includes> 
      <include>**/*.js</include> 
     </includes> 
     <excludes> 
      <exclude>**/*abc.js</exclude> 
      <exclude>**/compressed.css</exclude> 
     </excludes> 
     </aggregation> 
    </aggregations> 
    <excludes> 
     <exclude>**/*-min.js</exclude> 
     <exclude>**/*.min.js</exclude> 
     <exclude>**/*-min.css</exclude> 
     <exclude>**/*.min.css</exclude> 
    </excludes> 
    <jswarn>false</jswarn> 
    <nosuffix>false</nosuffix> 
    <sourceDirectory>${basedir}/target</sourceDirectory> 
    <outputDirectory>${basedir}/target</outputDirectory> 
    </configuration> 
    <executions> 
    <execution> 
     <id>compress_js_css</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>compress</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
+0

Alternatywnie, wtyczkę można znaleźć tutaj: http://davidb.github.io/yuicompressor-maven-plugin/ – Stephan

+0

dlaczego @Mady ustawił nosuffix na false? zwykle zależy ci tylko na wdrożeniu wersji zminimalizowanej? http://alchim.sourceforge.net/yuicompressor-maven-plugin/index.html – DPM

4

Mady, Minify Maven Plugin ma również wspierać włączenia/wyłączenia wzory.
Proszę spojrzeć na przykładową stronę Lexicographical ordering z dokumentacji wtyczki.

+0

Dzięki Samuel, tak to działa dobrze, ale zamknięcie jsEngine nie jest w stanie zminimalizować, w pewnym momencie się psuje. Początkowo byłem skłonny do zamknięcia, dlatego użyłem minify-maven-plugin. – Mady

Powiązane problemy