यहां पार्टी के लिए वास्तव में देर हो चुकी है, लेकिन यह पता लगाने में मदद मिल सकती है कि कोई व्यक्ति अभी भी एक अलग उत्तर की तलाश कर रहा है:
YUI कंप्रेसर का उपयोग करने की कोशिश करने के बाद, मुझे निराशा हुई कि यह jQuery और प्रिज्म के हाल के संस्करणों के साथ असंगत था (दो मुख्य 3 पार्टी जेएस लाइब्रेरी मुझे अपनी परियोजना के लिए आवश्यक थी जिसे मैं एक एकल फ़ाइल में संकुचित करना चाहता था)। इसलिए मैं उपयोग करने का फैसला terser , जो बदसूरत करना-जे एस का एक कांटा का समर्थन करता है कि ES6 + है। मैं इसे सीधे <exec>
कार्य का उपयोग करने के लिए चलाने में सक्षम नहीं था , लेकिन विन 10 के लिए विंडोज कमांड लाइन विधि का उपयोग करता है, कम से कम (यह नहीं कह सकता कि यह अन्यथा काम नहीं कर सकता है, लेकिन यह बहुत आसान काम था)। पथ सिस्टम वैरिएबल में कुछ और जोड़ने की आवश्यकता नहीं है (जैसा कि 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। इस कार्य पर अपाचे मैनुअल पृष्ठ संकेत दिया इस Windows फ़ाइलों .bat चलाने के लिए समाधान नहीं है, लेकिन यह वास्तव में आप किसी भी कमांड लाइन आवेदन (यहां तक कि उन है कि के बारे में बस चलाने के लिए अनुमति देता है <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 ओपन टूलकिट प्लगइन - एक जावा वेब एप्लिकेशन नहीं, प्रति se, लेकिन HTML5 आउटपुट का निर्माण करने के लिए जावा का उपयोग करना), इसलिए एकीकरण उन जोड़ने से ज्यादा नहीं था। एक नए लक्ष्य के लिए कार्य (चूक को सेट करने और इनपुट मापदंडों की जांच करने के बारे में अधिक कोड है!)।
सक्षम / अक्षम करने में आसान? मेरे मामले में, मेरे पास एक पैरामीटर है जो मैं एएनएसटी बिल्ड में पास करता हूं, जिसमें जेएस फाइल को बनाना और उसे छोटा करना शामिल है। इसलिए, यह केवल इस लक्ष्य को पूरा करता है यदि मैं परम को 'हां' में सेट करता हूं। कि एक ANT बिल्ड में स्थापित करने के लिए एक बहुत आसान बात है।
पारदर्शी अब तक, यह कई जेएस फाइलों में से किसी पर कोई प्रभाव नहीं पड़ता है, जिसमें मैं भी शामिल हूं। उनमें से कुछ मेरे अपने हैं (और मैं किसी भी तरह से जेएस विशेषज्ञ नहीं हूं) और कुछ हैं, जैसा कि मैंने उल्लेख किया है, सामान्य जेएस लाइब्रेरी।
न्यूनतम टसर, लेकिन आप इस विधि के साथ कमांड लाइन इनपुट के साथ किसी भी प्रकार का उपयोग कर सकते हैं।
अभाव की विशेषताएं? Terser केवल जावास्क्रिप्ट के साथ काम करता है। अगर मैं अपनी CSS फाइलों (जो मैं करता हूं) के लिए भी यही करना चाहता हूं, मैं YUI कंप्रेसर का उपयोग करता हूं।
जैसे कि यह वर्तमान में सक्रिय परियोजना है और इसमें अच्छा समर्थन है। साथ ही, वर्तमान कार्यान्वयन (केवल इसे एएनटी <exec>
लक्ष्य के माध्यम से बुला रहा है ) मुझे मिनिफायरों को स्वैप करने की अनुमति देता है मुझे सड़क के नीचे कुछ और उपयोग करने की आवश्यकता होनी चाहिए।
पसंद नहीं है कि यह Node.JS की आवश्यकता है Node.JS के खिलाफ कुछ भी नहीं, तुम मन, बस इतना है कि इस विशेष परियोजना अन्यथा इसकी जरूरत नहीं है। मैं इसके लिए YUI कंप्रेसर की तरह एक जावा .jar फ़ाइल का उपयोग करना पसंद करूँगा (मैं आसानी से वितरित कर सकता हूं कि मुझे प्लगइन की आवश्यकता है)।