সত্যিই এখানে পার্টিতে দেরি হয়ে গেছে, তবে বুঝতে পেরেছেন যে কেউ এখনও অন্যরকম উত্তর খুঁজছেন তাদের সহায়তা করতে পারে:
YUI কমপ্রেসর ব্যবহার করার চেষ্টা করার পরে, আমি হতাশ হয়েছি যে এটি jQuery এবং প্রিজমের আরও সাম্প্রতিক সংস্করণগুলির সাথে সঙ্গতিপূর্ণ নয় (আমার প্রকল্পের জন্য দুটি প্রধান তৃতীয় পক্ষের জেএস লাইব্রেরি যা আমি একটি ফাইলে সংকুচিত করতে চেয়েছিলাম)। সুতরাং আমি সিদ্ধান্ত নিয়েছি যে টিসার ব্যবহার করা হবে , যা Eg6ify-JS এর একটি কাঁটা যা ES6 + সমর্থন করে। আমি সরাসরি <exec>
টাস্কটি ব্যবহার করে এটি চালাতে সক্ষম হয়েছি না , তবে উইন্ডোজ কমান্ড লাইন পদ্ধতিটি উইন 10 এর জন্য কাজ করে, কমপক্ষে (এটি অন্যথায় কাজ করতে পারে না বলে বলছেন না, তবে এটি ছিল খুব সহজ কাজ)। পাথ সিস্টেমের ভেরিয়েবলের সাথে অন্য কিছু যুক্ত করার দরকার নেই (যেমন ইনস্টলেশনের সময় নোড.জেএস সাধারণত যুক্ত করা হয়)। আমি প্রথম এএনটি <concat>
টাস্কটি একটি বড়, সঙ্কুচিত ফাইল তৈরি করতে ব্যবহার করি । <fileset>
এটি অর্ডার সংরক্ষণ করবে হিসাবে ব্যবহার করুন (তবে তা যদি গুরুত্বপূর্ণ হয় তবে)।
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
তারপরে <exec>
যেকোন এনপিএম প্রোগ্রাম যেমন টার্সার চালানোর জন্য টাস্কটি ব্যবহার করুন । এই কাজের উপর এ্যাপাচি ম্যানুয়েল পৃষ্ঠা নির্দেশিত এই 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>
সংহত? এটি একটি এএনটি বিল্ড স্ক্রিপ্টের একটি অংশ (অন্যান্য বিষয়গুলির মধ্যে কাস্টম জাভাস্ক্রিপ্ট সমর্থন করার জন্য একটি ডিআইটিএ ওপেন টুলকিট প্লাগইন - কোনও জাভা ওয়েব অ্যাপ্লিকেশন নয়, তবে এইচটিএমএল 5 আউটপুট তৈরি করতে জাভা ব্যবহার করা), সুতরাং সংহতকরণগুলি যুক্ত করার চেয়ে বেশি কিছু ছিল না নতুন লক্ষ্যে কার্য (ডিফল্ট নির্ধারণ এবং ইনপুট প্যারামিটারগুলি পরীক্ষা করার বিষয়ে আরও কোড রয়েছে!)।
সক্ষম / অক্ষম করা সহজ? আমার ক্ষেত্রে, জেএস ফাইলটি বিল্ডিং এবং মিনিফাইং অন্তর্ভুক্ত করার জন্য আমার কাছে একটি প্যারামিটার রয়েছে আমি এএনটি বিল্ডে। সুতরাং হ্যাঁ, আমি কেবলমাত্র 'হ্যাঁ' এ পরম সেট করলেই এটি এই লক্ষ্যটি সম্পাদন করে। এটিটি একটি এএনটি বিল্ডে স্থাপন করা খুব সহজ জিনিস।
স্বচ্ছ এ পর্যন্ত, আমি অন্তর্ভুক্ত থাকা বেশ কয়েকটি জেএস ফাইলের কোনওটিরই কোনও প্রভাব নেই বলে মনে হয়। এগুলির মধ্যে কয়েকটি আমার নিজস্ব (এবং আমি কোনও উপায়ে জেএস বিশেষজ্ঞ নই) এবং কয়েকটি যেমন আমি উল্লেখ করেছি, সাধারণ জেএস লাইব্রেরি।
মিনিফায়ার টারসার, তবে আপনি এই পদ্ধতির সাহায্যে কমান্ড লাইন ইনপুট সহ যে কোনও মাইনিডযুক্ত ব্যবহার করতে পারেন।
বৈশিষ্ট্য অভাব? Terser শুধুমাত্র জাভাস্ক্রিপ্ট সঙ্গে কাজ করে। আমি যদি আমার সিএসএস ফাইলগুলির জন্য একই করতে চাই (যা আমি করি) তবে আমি ওয়াইইউআই কম্প্রেসার ব্যবহার করি।
এর মতো এটি বর্তমানে একটি সক্রিয় প্রকল্প এবং এর ভাল সমর্থন রয়েছে। অধিকন্তু, বর্তমান বাস্তবায়ন (এটিটিকে কেবল এএনটি <exec>
টার্গেটের মাধ্যমে কল করে ) আমাকে রাস্তায় নীচে অন্য কিছু ব্যবহার করার প্রয়োজন হলে মিনিফায়ারগুলি সরিয়ে নিতে দেয়।
পছন্দ করবেন না যে এটির জন্য নোড.জেএস প্রয়োজন নোড.জেএস এর বিরুদ্ধে কিছুই নয়, মনে রাখবেন, এই বিশেষ প্রকল্পটির অন্যথায় প্রয়োজন নেই। আমি এর জন্য YUI কমপ্রেসরের মতো একটি জাভা .jar ফাইলটি ব্যবহার করতে পছন্দ করব (আমি খুব সহজেই এটির প্রয়োজন এমন একটি প্লাগইন দিয়ে বিতরণ করতে পারি)।