Thực sự trễ đến bữa tiệc ở đây, nhưng có thể thấy điều này có thể giúp ai đó vẫn đang tìm kiếm một câu trả lời khác:
Sau khi cố gắng sử dụng YUI Compressor, tôi thất vọng vì nó không tương thích với các phiên bản mới hơn của jQuery và Prism (hai thư viện JS chính của bên thứ ba mà tôi cần cho dự án của mình mà tôi muốn nén thành một tệp). Vì vậy, tôi quyết định sử dụng Terser , là một nhánh của Uglify-JS hỗ trợ ES6 +. Tôi đã không thể làm cho nó chạy trực tiếp bằng cách sử dụng <exec>
tác vụ, nhưng sử dụng phương pháp dòng lệnh Windows hoạt động cho Win 10, ít nhất (không nói rằng nó không thể hoạt động khác, nhưng đây là một công việc rất dễ dàng). Không cần thêm bất kỳ thứ gì khác vào biến hệ thống Đường dẫn (vì Node.JS thường được thêm vào trong quá trình cài đặt). Đầu tiên tôi sử dụng <concat>
tác vụ ANT để tạo một tệp lớn, không nén. Sử dụng <fileset>
vì nó sẽ bảo toàn thứ tự (dù sao thì điều đó cũng quan trọng).
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
Sau đó, sử dụng <exec>
tác vụ để chạy bất kỳ chương trình NPM nào, chẳng hạn như Terser. Các Apache của nhãn hiệu trang trên nhiệm vụ này cho thấy đây là Windows workaround cho chạy .bat file, nhưng nó thực sự cho phép bạn chạy chỉ là về bất kỳ ứng dụng dòng lệnh (thậm chí cả những <exec>
bí ẩn không thể tìm cách khác).
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
Tích hợp? Nó là một phần của tập lệnh xây dựng ANT (một plugin Bộ công cụ mở DITA để hỗ trợ JavaScript tùy chỉnh, trong số những thứ khác - không phải ứng dụng Web Java, mà là sử dụng Java để tạo đầu ra HTML5), vì vậy việc tích hợp không nhiều hơn là thêm những nhiệm vụ cho một mục tiêu mới (có thêm mã liên quan đến việc đặt giá trị mặc định và kiểm tra các thông số đầu vào!).
Dễ dàng bật / tắt? Trong trường hợp của tôi, tôi có một tham số tôi chuyển cho ANT Build để bao gồm việc xây dựng và thu nhỏ tệp JS. Vì vậy, có, nó chỉ thực hiện mục tiêu này nếu tôi đặt tham số thành 'Có'. Đó là một điều khá dễ dàng để thiết lập trong một bản dựng ANT.
Trong suốt Cho đến nay, nó dường như không ảnh hưởng đến bất kỳ tệp JS nào mà tôi đang đưa vào. Một số trong số đó là của riêng tôi (và tôi không phải là chuyên gia JS, bởi bất kỳ phương tiện nào) và một số, như tôi đã đề cập, là các thư viện JS phổ biến.
Minifier Terser, nhưng bạn có thể sử dụng bất kỳ đầu vào dòng lệnh nào được thu nhỏ với phương thức này.
Thiếu tính năng? Terser chỉ hoạt động với JavaScript. Nếu tôi muốn làm điều tương tự cho các tệp CSS của mình (mà tôi làm), tôi sử dụng YUI Compressor.
Like That nó là một dự án hiện đang hoạt động và có sự hỗ trợ tốt. Thêm vào đó, việc triển khai hiện tại (chỉ gọi nó qua <exec>
mục tiêu ANT ) cho phép tôi hoán đổi các bộ thu nhỏ nếu tôi cần sử dụng thứ gì đó khác trên đường.
Không thích Điều đó nó yêu cầu Node.JS. Không có gì chống lại Node.JS, phiền bạn, chỉ là dự án cụ thể này không cần nó. Tôi muốn sử dụng tệp .jar Java như YUI Compressor cho việc này (tôi có thể dễ dàng phân phối tệp đó với một plugin nếu tôi cần).