2015-02-16 14 views
13

Czy istnieje już preferowany sposób transpozycji kodu ECMAScript6 do ECMAScript5 za pomocą programu traceur lub Babel (o nazwie 6to5) w projekcie maven? Przeszukałem już sieć bez powodzenia.Wtyczka Maven, która transponuje ES6 na ES5, która używa Traceur lub Babel

+0

Myślę, że albo jest w porządku. Czy masz jakiś problem z którymś z nich? –

+1

Pytałem, czy istnieje już rozwiązanie, jak zintegrować jeden z tych transpilerów w maven. Próbowałem Babel używając nodejs, ale chcę go użyć do przeniesienia kodu ES6 do ES5 w moim projekcie Maven. –

+0

Rozumiem. Czy wypróbowałeś wtyczkę 'exec' maven? http://mojo.codehaus.org/exec-maven-plugin/usage.html.Używałem tego wcześniej do aranżacji jakiegoś procesu kompilacji z udziałem pliku node.js –

Odpowiedz

8
To może nie być dokładne rozwiązanie twojego problemu, ale sposób, w jaki to robię, polega na użyciu https://github.com/eirslett/frontend-maven-plugin, co z kolei pozwala mi używać zadań Grunt podczas procesu budowania (oraz w różnych fazach kompilacji). Potem, mając do dyspozycji Grunta, stworzyłem chrząknięcie, by użyć chrzczastego babla do konwersji moich plików.

Ta wtyczka pozwala również na używanie łyka, jeśli taka jest Twoja wola.

Używam również tego samego ustawienia do uruchamiania Karmy i JSHint podczas fazy testowej.

Nadzieja to pomaga,

M

Edit: warto zauważyć, że instalacja węzeł że wtyczka nie jest lokalny projektu. Nie ma więc potrzeby instalowania węzła na całym świecie.

1

Użyłem powyższej świetnej sugestii na temat frontend-maven-plugin i wszystko działało, ale wpadłem w parę problemów, więc pomyślałem, że opublikuję bardziej kompletne rozwiązanie, gotowe do ślepego skopiowania i wklejenia do plików kompilacji. I wrote a detailed blog post about it here i nieco skrócona wersja to jest poniżej:

Moja sekcja frontend-maven-plugin w moim pom.xml skończyło się patrząc tak:

<plugin> 
<groupId>com.github.eirslett</groupId> 
<artifactId>frontend-maven-plugin</artifactId> 
<version>1.2</version> 

<configuration> 
    <nodeVersion>v4.6.0</nodeVersion> 
</configuration> 

<executions> 
    <execution> 
     <goals> 
      <goal>install-node-and-npm</goal> 
     </goals> 
     <phase>generate-resources</phase> 
    </execution> 

    <execution> 
     <id>npm install</id> 
     <goals> 
      <goal>npm</goal> 
     </goals> 
     <configuration> 
      <arguments>install</arguments> 
     </configuration> 
    </execution> 

    <execution> 
     <id>grunt build</id> 
     <goals> 
      <goal>grunt</goal> 
     </goals> 
     <phase>generate-sources</phase> 
    </execution> 
</executions> 

Po zdobyciu krok transpile Grunt wszystko działało Wystąpił problem, aby poprawnie pobrać te pliki z pliku WAR. Próbowałem oczywiste kopiowanie plików do docelowego folderu wojny po rozerwaniu na różnych etapach budowy i różnych podobnych rzeczach, które nie zadziałały.

Rozwiązaniem okazało się po prostu nadpisanie nieinterpretowanych plików js przez włączenie transpiled plików w sekcji webResources sekcji maven-war-plugin. Który zakończył się patrzy tak:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-war-plugin</artifactId> 
<version>2.2</version> 
<configuration> 
    <warName>Example-1.0-SNAPSHOT</warName> 
    <webResources> 
     <resource> 
      <directory>${project.build.directory}/dist</directory> 
     </resource> 
    </webResources> 
</configuration> 

ja też wpadł na emisję uszkodzonych pakietów pobierany przez KMP w lewo i w globalnej pamięci podręcznej, która pochodzących z Maven jest śmieszne i coś nigdy nie zdarzyło się.

Jeśli podczas kompilacji frontend-maven-plugin pojawi się coś w rodzaju błędu lub wyjątku zip, to jest to prawdopodobne i można to naprawić przy pomocy "czyszczenia pamięci npm" i usunięcia katalogów "node" i "node_modules" w swój katalog projektu i ponowna próba (zajęło mi to 3 razy, dopóki nie udało się skutecznie złapać zależności!).

I my blog post zawiera to, jak wyglądały pliki package.json i GruntFile.js.

Powiązane problemy