ضغط كود JavaScript
مثال صغير يتقلص من 68 إلى 40 بايت (أصغر بنسبة 41.2%) بحذف التعليقات والمسافات فقط: function hello(name){return"Hi, "+name;}
طريقة الاستخدام
- الصق كود JavaScript في مربع الإدخال.
- أبقِ خيار "الإبقاء على تعليقات الترخيص" مفعّلًا إذا كان في ملفك رأس يجب أن يبقى. عطّله لحذف كل التعليقات.
- اقرأ الحجم قبل الضغط وبعده، ثم انسخ الكود المضغوط.
طريقة الحساب
تقسم الأداة الكود إلى وحدات (tokens) ثم تعيد كتابتها بأقل قدر من المسافات يُبقي المعنى نفسه. لا تغيّر أي وحدة أبدًا، فتخرج النصوص والتعابير النمطية وقوالب النص والأرقام والأسماء كما دخلت تمامًا.
لا تعيد تسمية المتغيرات، ولا تختصر أسماء الخصائص، ولا تحذف الكود الميت، ولا تحوّل الصياغة. لهذا يكون التوفير أقل منه مع أداة ضغط كاملة.
تبقى المسافة حيثما كانت وحدتان ستندمجان بدونها، كما في "return x" و"a in b" و"a + +b" و"1 .toString()". وتُقرأ الشرطة المائلة تعبيرًا نمطيًا أو قسمة بحسب الوحدة التي قبلها، بما في ذلك بعد القوس الختامي لرأس if أو while أو for.
تُحذف فواصل الأسطر فقط حيث لا يمكن أن يتغير البرنامج، مثل بعد قوس افتتاحي أو فاصلة أو فاصلة منقوطة أو عامل. وحيث يمكن لـ JavaScript إدراج فاصلة منقوطة تلقائيًا، كبعد عبارة بلا فاصلة منقوطة، أو بعد return، أو قبل سطر يبدأ بـ ( أو [، يبقى فاصل السطر. والكود الذي ينهي عباراته بفواصل منقوطة أصلًا يتقلص إلى أسطر قليلة جدًا.
تنبّه الأداة إلى نص أو قالب أو تعليق غير مغلق، وإلى أقواس معقوفة لا تُغلق. راجع الكود الأصلي إذا ظهر تنبيه.
أسئلة شائعة
هل يعمل الكود المضغوط بالطريقة نفسها؟
يُفترض ذلك، لأن ما يتغير هو المسافات والتعليقات فقط والوحدات تبقى متطابقة. وتُحفظ فواصل الأسطر التي يعتمد عليها الإدراج التلقائي للفاصلة المنقوطة. شغّل اختباراتك على النتيجة قبل النشر، كما مع أي خطوة بناء.
لماذا بقيت بعض فواصل الأسطر؟
قد تُدرج JavaScript فاصلة منقوطة عند فاصل السطر. وإذا لم تنتهِ العبارة بفاصلة منقوطة فإن دمجها مع السطر التالي قد يغير المعنى أو يسبب خطأ صياغة، لذا يبقى الفاصل. أضف الفواصل المنقوطة إلى مصدرك لتتمكن الأداة من دمج تلك الأسطر.
هل تعيد تسمية المتغيرات مثل Terser أو esbuild؟
لا. تحذف المسافات والتعليقات فقط. لأصغر حزمة ممكنة استخدم أداة بناء في بيئة الإنتاج، واستخدم هذه الصفحة للمقتطفات السريعة وbookmarklets وفحص الأحجام.
هل تتعامل مع التعابير النمطية وقوالب النص؟
نعم. التعبير النمطي مثل /a b[/]/g والقالب مثل `x ${ y } z` يُنسخان كما هما، ويُضغط الكود داخل ${ }. القيد الوحيد هو تعبير نمطي حرفي يبدأ سطرًا مباشرة بعد قوس ختامي ليس رأس if أو while أو for، وهذا نادر.
هل تدعم الصياغة الحديثة وTypeScript؟
تقرأ صياغة JavaScript الحديثة مثل الدوال السهمية والأصناف والتسلسل الاختياري والحقول الخاصة، لأنها لا تحتاج إلى فهمها أصلًا. لكنها لا تحلل TypeScript ولا JSX، فقد تُعامل تعليقات الأنواع والوسوم نصًا عاديًا ولا تُفحص.
هل يُرفع الكود الخاص بي؟
لا. كل شيء يجري في متصفحك.