Terlambat banget ke pesta di sini, tapi menurutku ini mungkin bisa membantu seseorang yang masih mencari jawaban berbeda:
Setelah mencoba menggunakan YUI Compressor, saya kecewa karena itu tidak kompatibel dengan versi jQuery dan Prism yang lebih baru (dua pustaka JS pihak ketiga utama yang saya butuhkan untuk proyek saya yang ingin saya kompres menjadi satu file). Jadi saya memutuskan untuk menggunakan Terser , yang merupakan cabang dari Uglify-JS yang mendukung ES6 +. Saya tidak bisa membuatnya berjalan langsung menggunakan <exec>
tugas, tetapi menggunakan metode baris perintah Windows berfungsi untuk Win 10, setidaknya (tidak mengatakan itu tidak dapat berfungsi sebaliknya, tetapi ini adalah penyelesaian yang sangat mudah). Tidak perlu menambahkan apa pun ke variabel sistem Path (karena Node.JS biasanya ditambahkan selama instalasi). Saya pertama kali menggunakan <concat>
tugas ANT untuk membuat file besar dan tidak terkompresi. Gunakan <fileset>
karena akan menjaga ketertiban (jika itu penting, bagaimanapun).
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
Kemudian gunakan <exec>
tugas untuk menjalankan program NPM apa pun, seperti Terser. The Apache halaman manual pada tugas ini mengindikasikan ini adalah Windows atasi untuk menjalankan kelelawar file, tapi itu benar-benar memungkinkan Anda menjalankan apa saja aplikasi baris perintah (bahkan mereka yang <exec>
misterius tidak dapat menemukan sebaliknya).
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
Mengintegrasikan? Ini adalah bagian dari skrip build ANT (plugin DITA Open Toolkit untuk mendukung JavaScript kustom, antara lain - bukan aplikasi Web Java, tetapi menggunakan Java untuk membuat output HTML5), jadi integrasi tidak lebih dari sekadar menambahkan itu. tugas ke target baru (ada lebih banyak kode mengenai pengaturan default dan memeriksa parameter input!).
Mudah Diaktifkan / Nonaktifkan? Dalam kasus saya, saya memiliki parameter yang saya berikan ke ANT Build untuk menyertakan membangun dan mengecilkan file JS. Jadi ya, itu hanya melakukan target ini jika saya menyetel param ke 'Ya'. Itu adalah hal yang cukup mudah untuk disiapkan dalam build ANT.
Transparan Sejauh ini, tampaknya tidak berpengaruh pada salah satu dari beberapa file JS yang saya sertakan. Beberapa di antaranya adalah milik saya (dan saya bukan ahli JS, dengan cara apa pun) dan beberapa, seperti yang saya sebutkan, pustaka JS umum.
Minifier Terser, tetapi Anda bisa menggunakan apa saja yang diperkecil dengan input baris perintah dengan metode ini.
Kekurangan fitur? Terser hanya bekerja dengan JavaScript. Jika saya ingin melakukan hal yang sama untuk file CSS saya (yang saya lakukan), saya menggunakan YUI Compressor.
Seperti Itu, ini adalah proyek yang sedang aktif dan memiliki dukungan yang baik. Plus, implementasi saat ini (hanya memanggilnya melalui <exec>
target ANT ) memungkinkan saya untuk menukar minifier jika saya perlu menggunakan sesuatu yang lain di jalan.
Tidak suka Itu membutuhkan Node.JS. Tidak ada yang melawan Node.JS, ingatlah, hanya saja proyek khusus ini tidak membutuhkannya sebaliknya. Saya lebih suka menggunakan file Java .jar seperti YUI Compressor untuk ini (saya dapat dengan mudah mendistribusikannya dengan plugin jika saya perlu).