2015-02-16 19 views
13

Có cách nào ưu tiên làm thế nào để transpile mã ECMAScript6 để ECMAScript5 bằng cách sử dụng traceur hoặc Babel (chính thức đặt tên 6to5) trong một dự án maven? Tôi đã tìm kiếm trên mạng mà không thành công.Maven Plugin mà transpiles ES6 để ES5 mà sử dụng Traceur hoặc Babel

+0

Tôi nghĩ là tốt. Bạn đã có một vấn đề với một trong số họ? –

+1

Tôi đã hỏi nếu đã có một giải pháp làm thế nào để tích hợp một trong những transpilers vào một xây dựng maven. Tôi đã thử Babel bằng cách sử dụng nodejs, nhưng tôi muốn sử dụng nó để chuyển mã ES6 thành ES5 trong dự án Maven của tôi. –

+0

Tôi hiểu. Bạn đã thử plugin maven 'exec' chưa? http://mojo.codehaus.org/exec-maven-plugin/usage.html.Tôi đã sử dụng điều này trước đây để dàn dựng một số quy trình xây dựng liên quan đến node.js –

Trả lời

8

Đây có thể không phải là giải pháp chính xác cho vấn đề của bạn, nhưng cách tôi làm điều này là sử dụng https://github.com/eirslett/frontend-maven-plugin, lần lượt cho phép tôi sử dụng các tác vụ Grunt trong quá trình xây dựng (và trong các giai đoạn khác nhau của bản dựng). Sau đó, bằng cách có Grunt có sẵn cho tôi, tôi tạo ra một nhiệm vụ grunt để sử dụng grunt-babel để chuyển đổi các tập tin của tôi.

Plugin cũng cho phép bạn sử dụng gulp nếu đó là tùy chọn của bạn.

Tôi cũng sử dụng cùng một thiết lập để chạy Karma và JSHint trong giai đoạn thử nghiệm.

Hope this helps,

M

Edit: giá trị của nó lưu ý rằng việc cài đặt nút đó các plugin không là địa phương cho dự án. Vì vậy, không cần phải có nút trên toàn cầu được cài đặt.

1

Tôi đã sử dụng đề xuất frontend-maven-plugin tuyệt vời ở trên và nhận được tất cả hoạt động nhưng đã gặp phải một vài trở ngại nên tôi đã tìm ra một giải pháp hoàn chỉnh hơn đã sẵn sàng để sao chép và dán một cách mù quáng vào tệp xây dựng của bạn. I wrote a detailed blog post about it here và một phiên bản rút gọn nhẹ của nó là dưới đây:

phần frontend-maven-plugin của tôi trong pom.xml của tôi đã kết thúc như thế này:

<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> 

Sau khi nhận được các bước transpile Grunt tất cả các công việc tôi gặp phải trong vấn đề nhận các tệp đó trong tệp WAR được đóng gói chính xác. Tôi đã cố gắng sao chép rõ ràng các tập tin vào thư mục chiến tranh phát nổ mục tiêu ở các giai đoạn xây dựng khác nhau và những thứ tương tự khác nhau mà tất cả đều không hoạt động.

Giải pháp đã kết thúc để chỉ ghi đè lên các tệp js không được chuyển đổi bằng cách bao gồm các tệp được chuyển đổi trong phần webResources của phần maven-war-plugin. Mà đã kết thúc tìm kiếm như thế này:

<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> 

Tôi cũng tình cờ gặp vấn đề gói tham nhũng đang được tải xuống bởi NPM và để lại trong bộ nhớ cache toàn cầu, mà đến từ Maven là vô lý và điều mà tôi chưa bao giờ đã xảy ra.

Nếu bạn gặp lỗi giống như lỗi zip hoặc ngoại lệ trong bước xây dựng trình cắm thêm maven-plugin, bạn có thể sửa nó bằng "bộ nhớ cache npm" và xóa các thư mục "nút" và "node_modules" thư mục dự án của bạn và thử lại (nó đã cho tôi 3 lần cho đến khi nó nắm bắt các phụ thuộc thành công!)

my blog post bao gồm những gì các tập tin package.json và GruntFile.js trông như thế nào.

Các vấn đề liên quan