JavaScript मिनिफ़ायर और ब्यूटिफ़ायर - आपके ब्राउज़र में Terser
JavaScript मिनिफ़ायर और ब्यूटिफ़ायर
स्थानीय नाम छोटे करने से सबसे ज़्यादा बाइट बचते हैं, पर वह कोड टूट जाता है जो नामों को टेक्स्ट की तरह खोजता है — eval, new Function, या पैरामीटर नाम पढ़ने वाला कोई फ़्रेमवर्क। इन पर निर्भर हों तो बंद कर दें।
यह टूल क्या करता है
JavaScript मिनिफ़ाई करना खाली जगह हटाना नहीं है। ढूँढो-बदलो से करने पर ऐसी फ़ाइलें बनती हैं जो देखने में ठीक लगती हैं पर अलग व्यवहार करती हैं, और यह फ़र्क़ प्रोडक्शन में सामने आता है। यह पेज Terser को — ज़्यादातर प्रोजेक्ट के बिल्ड चरण के पीछे वाला इंजन — आपके ब्राउज़र के भीतर चलाता है।
इसे कैसे इस्तेमाल करें
- 1 JavaScript को बॉक्स में चिपकाएँ।
- 2 लक्ष्य चुनें और तय करें कि नाम छोटे करने हैं या नहीं।
- 3 मिनिफ़ाई दबाएँ — या किसी मिनिफ़ाई फ़ाइल को वापस खोलने के लिए सुंदर बनाएँ।
ढूँढो-बदलो नहीं, पार्सर क्यों
जो सेमीकोलन आपने नहीं लिखे, JavaScript ख़ुद लगा देता है। "return" और उसके मान के बीच की लाइन ब्रेक हटाइए, फ़ंक्शन undefined लौटाने लगेगा — फ़ाइल तब भी मान्य है, बस काम कुछ और करती है। वही अक्षर कहीं भाग है, कहीं रेगुलर एक्सप्रेशन। इन्हें अलग करने के लिए पैटर्न नहीं, व्याकरण चाहिए; इसीलिए यह पेज असली पार्सर इस्तेमाल करता है।
असल में छोटा क्या होता है
खाली जगह और टिप्पणियाँ इसका सबसे छोटा हिस्सा हैं। असली बचत आती है स्थानीय वेरिएबल को एक अक्षर कर देने, अलग-अलग घोषणाओं को एक में मिलाने, स्थिरांक हल करने और कभी न चलने वाला कोड हटाने से। ये सब पेड़ पर होने वाले काम हैं — मिनिफ़ायर को पता होना चाहिए कि दो नाम एक ही बाइंडिंग हैं और बीच में कोई उन्हें पढ़ता नहीं।
नाम छोटे करना कहाँ काटता है
मिनिफ़ायर वही बदल सकता है जो उसे दिखता है। टेक्स्ट की तरह लिखा नाम उसे नहीं दिखता: eval("count + 1"), new Function("a", "return a"), या ऐसा फ़्रेमवर्क जो यह तय करने के लिए फ़ंक्शन के पैरामीटर नाम पढ़ता है कि क्या देना है। वे पुराना नाम ढूँढते रह जाते हैं और कुछ नहीं मिलता। यह भाषा का गुण है, औज़ार का दोष नहीं — इसीलिए यह स्विच चुपचाप लगाया नहीं, आप पर छोड़ा गया है।
सुंदर बनाना असली फ़ाइल वापस नहीं लाता
सुंदर बनाना इंडेंट और लाइन ब्रेक वापस रख देता है, इसलिए मिनिफ़ाई फ़ाइल फिर पढ़ने लायक हो जाती है। पर जो फेंका गया वह नहीं लौटता: टिप्पणियाँ जा चुकी हैं, और नाम छोटे किए गए हों तो छोटे ही रहते हैं — कोई औज़ार नहीं भाँप सकता कि "e" कभी "errorMessage" था। प्रोडक्शन फ़ाइल डीबग करने के लिए असली रूप सिर्फ़ सोर्स मैप लौटाता है।