JavaScript মিনিফায়ার ও বিউটিফায়ার - আপনার ব্রাউজারে Terser
JavaScript মিনিফায়ার ও বিউটিফায়ার
স্থানীয় নাম ছোট করলে সবচেয়ে বেশি বাইট বাঁচে, কিন্তু যে কোড নামকে লেখা হিসেবে খোঁজে তা ভেঙে যায় — eval, new Function, বা প্যারামিটারের নাম পড়া কোনো ফ্রেমওয়ার্ক। এগুলোর ওপর নির্ভর করলে বন্ধ রাখুন।
JavaScript মিনিফিকেশন - সচরাচর প্রশ্ন
সবচেয়ে বেশি ব্যবহৃত ফরম্যাটার
সর্বকালএই টুল কী করে
JavaScript মিনিফাই করা মানে ফাঁকা জায়গা মোছা নয়। খুঁজে-বদলে করলে এমন ফাইল বেরোয় যা দেখতে ঠিক অথচ আচরণে আলাদা, আর সেই পার্থক্য ধরা পড়ে প্রোডাকশনে গিয়ে। এই পাতা Terser — বেশিরভাগ প্রকল্পের বিল্ড ধাপের পেছনের ইঞ্জিন — আপনার ব্রাউজারের ভেতরেই চালায়।
কীভাবে ব্যবহার করবেন
- 1 JavaScript বাক্সে পেস্ট করুন।
- 2 একটি লক্ষ্য বাছুন আর নাম ছোট করবেন কি না ঠিক করুন।
- 3 মিনিফাই চাপুন — কিংবা মিনিফাই করা ফাইল আবার খুলতে সাজান চাপুন।
কেন খুঁজে-বদলে নয়, পার্সার
আপনি যে সেমিকোলনগুলো লেখেননি, JavaScript নিজেই বসিয়ে দেয়। "return" আর তার মানের মাঝের লাইন ব্রেক সরিয়ে দিন — ফাংশনটি undefined ফেরত দিতে শুরু করবে; ফাইল তখনও বৈধ, শুধু কাজটাই আলাদা। একই অক্ষর কোথাও ভাগ, কোথাও রেগুলার এক্সপ্রেশন। এদের আলাদা করতে প্যাটার্ন নয়, ব্যাকরণ লাগে; তাই এই পাতা সত্যিকারের পার্সার ব্যবহার করে।
আসলে ছোট হয় কী
ফাঁকা জায়গা আর মন্তব্য এর সবচেয়ে ছোট অংশ। আসল সাশ্রয় আসে স্থানীয় ভেরিয়েবলকে এক অক্ষরে নামানো, আলাদা ঘোষণাগুলো এক করা, ধ্রুবক হিসাব করে ফেলা আর কখনও না-চলা কোড ফেলে দেওয়া থেকে। এগুলো সবই গাছের উপরের কাজ — মিনিফায়ারকে জানতে হয় দুটি নাম একই বন্ধন বোঝায় আর মাঝখানে কেউ তা পড়ছে না।
নাম ছোট করা কোথায় কামড়ায়
মিনিফায়ার যা দেখতে পায় কেবল তারই নাম বদলাতে পারে। লেখা আকারে থাকা নাম সে দেখে না: eval("count + 1"), new Function("a", "return a"), বা এমন ফ্রেমওয়ার্ক যা কী দেবে ঠিক করতে ফাংশনের প্যারামিটারের নাম পড়ে। ওরা পুরোনো নামই খুঁজতে থাকে আর কিছুই পায় না। এটি ভাষার ধর্ম, টুলের ত্রুটি নয় — তাই সুইচটি নীরবে চালু না করে আপনার হাতে রাখা হয়েছে।
সাজানো মানে আসল ফাইল ফিরে পাওয়া নয়
সাজানো ইনডেন্ট আর লাইন ব্রেক ফিরিয়ে দেয়, তাই মিনিফাই করা ফাইল আবার পড়ার মতো হয়। কিন্তু যা ফেলে দেওয়া হয়েছে তা ফেরে না: মন্তব্য গেছে, আর নাম ছোট করা হয়ে থাকলে ছোটই থাকে — কোনো টুলই আন্দাজ করতে পারে না যে "e" একদা "errorMessage" ছিল। প্রোডাকশনের ফাইল ডিবাগ করতে আসলটা ফেরায় কেবল সোর্স ম্যাপ।