ไปงานปาร์ตี้ที่นี่ช้ามาก แต่คิดว่าอาจช่วยให้ใครบางคนยังคงมองหาคำตอบที่แตกต่างออกไป:
หลังจากพยายามใช้ YUI Compressor ฉันรู้สึกผิดหวังที่มันเข้ากันไม่ได้กับ jQuery และ Prism เวอร์ชันล่าสุด (ไลบรารี JS ของบุคคลที่สามหลักสองตัวที่ฉันต้องการสำหรับโปรเจ็กต์ของฉันซึ่งฉันต้องการบีบอัดเป็นไฟล์เดียว) ดังนั้นฉันจึงตัดสินใจใช้Terserซึ่งเป็นทางแยกของ Uglify-JS ที่รองรับ ES6 + ฉันไม่สามารถทำให้มันทำงานได้โดยตรงโดยใช้<exec>
งาน แต่การใช้วิธีบรรทัดคำสั่งของ Windows ใช้ได้กับ Win 10 อย่างน้อย (ไม่ได้บอกว่ามันทำงานไม่ได้ แต่นี่เป็นการแก้ปัญหาที่ง่ายมาก) ไม่จำเป็นต้องเพิ่มสิ่งอื่นใดให้กับตัวแปรระบบ Path (เนื่องจากปกติจะมีการเพิ่ม Node.JS ระหว่างการติดตั้ง) ก่อนอื่นฉันใช้<concat>
งานANT เพื่อสร้างไฟล์ขนาดใหญ่ที่ไม่มีการบีบอัด ใช้<fileset>
ตามที่จะรักษาคำสั่งซื้อ (ถ้านั่นสำคัญ)
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
จากนั้นใช้<exec>
งานเพื่อรันโปรแกรม NPM ใด ๆ เช่น Terser Apache หน้าคู่มือในงานนี้ชี้ให้เห็นนี้เป็นของ Windows แก้ปัญหาสำหรับการเรียกใช้ไฟล์ค้างคาว แต่จริงๆมันช่วยให้คุณทำงานเพียงเกี่ยวกับการประยุกต์ใช้บรรทัดคำสั่งใด ๆ (แม้กระทั่งผู้ที่<exec>
ลึกลับไม่สามารถหาอย่างอื่น)
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
บูรณาการ?เป็นส่วนหนึ่งของสคริปต์บิลด์ ANT (ปลั๊กอิน DITA Open Toolkit เพื่อรองรับ JavaScript ที่กำหนดเองเหนือสิ่งอื่นใด - ไม่ใช่ Java Web application แต่ใช้ Java เพื่อสร้างเอาต์พุต HTML5) ดังนั้นการรวมจึงไม่มากไปกว่าการเพิ่มสิ่งเหล่านี้ งานไปยังเป้าหมายใหม่ (มีรหัสเพิ่มเติมเกี่ยวกับการตั้งค่าเริ่มต้นและการตรวจสอบพารามิเตอร์อินพุต!)
ง่ายต่อการเปิด / ปิด? ในกรณีของฉันฉันมีพารามิเตอร์ที่ฉันส่งผ่านไปยัง ANT Build เพื่อรวมการสร้างและการย่อขนาดไฟล์ JS ใช่มันจะดำเนินการเป้าหมายนี้ก็ต่อเมื่อฉันตั้งค่าพารามิเตอร์เป็น 'ใช่' นั่นเป็นเรื่องง่ายมากที่จะตั้งค่าในโครงสร้าง ANT
โปร่งใสจนถึงตอนนี้ดูเหมือนว่าจะไม่มีผลกับไฟล์ JS หลายไฟล์ที่ฉันรวมอยู่ด้วย บางส่วนเป็นของฉันเอง (และฉันไม่ใช่ผู้เชี่ยวชาญ JS ไม่ว่าจะด้วยวิธีใดก็ตาม) และบางส่วนก็เป็นไลบรารี JS ทั่วไป
Minifier Terser แต่คุณสามารถใช้ minified กับอินพุตบรรทัดคำสั่งด้วยวิธีนี้
ขาดคุณสมบัติ? Terser ใช้งานได้กับ JavaScript เท่านั้น ถ้าฉันต้องการทำเช่นเดียวกันกับไฟล์ CSS ของฉัน (ซึ่งฉันทำ) ฉันใช้ YUI Compressor
ชอบว่าเป็นโครงการที่มีการใช้งานอยู่ในปัจจุบันและมีการสนับสนุนที่ดี นอกจากนี้การใช้งานปัจจุบัน (เรียกผ่าน<exec>
เป้าหมายANT เท่านั้น) ช่วยให้ฉันสามารถสลับตัวย่อหากฉันต้องใช้อย่างอื่นตามท้องถนน
ไม่ชอบที่ต้องใช้ Node.JS. ไม่มีอะไรต่อต้าน Node.JS โปรดทราบว่าโครงการเฉพาะนี้ไม่ต้องการเป็นอย่างอื่น ฉันชอบใช้ไฟล์ Java. jar เช่น YUI Compressor สำหรับสิ่งนี้มาก (ฉันสามารถแจกจ่ายได้อย่างง่ายดายด้วยปลั๊กอินที่ฉันควรจะทำ)