تصغير JavaScript
ملفات أصغر وسلوك مطابق
تصغير JavaScript بهذه الأداة المجانية يجري عبر الإنترنت مع الحفاظ على سلوك شيفرتك: فهي تحللها، وتختصر الأسماء، وتحذف ما لا يصل إليه شيء، وتعيد إليك ملفًا أصغر بكثير. أولًا، الصق نصك البرمجي أو أفلت ملفاتك. ثم اضغط زرًا واحدًا. وأخيرًا، انسخ النتيجة، لأن العمل كله يجري في علامة التبويب هذه.
- مجانيالسعر
- غير مطلوبالحساب
- لا يوجدالرفع
- في كل تشغيلمُتحقَّق منه
أداة تصغير JavaScript
الصق الكود أو أفلت ملفاتك — دون رفع أي شيء
الناتج المصغّر
- الأصل
- —
- مصغّر
- —
- الموفَّر
- —
- بعد gzip
- —
- الأسماء المختصرة
- —
- استغرق
- —
جاهز. الصق كود JavaScript، ثم اضغط «تصغير» أو «تجميل».
ما هو تصغير JavaScript؟
يأخذ مصغّر JavaScript ملفًا كتبته ليقرأه الناس ويعيد كتابته لينزّله المتصفح. تذهب تعليقاتك. وتذهب إزاحتك. وتصبح أسماؤك الطويلة الوصفية قصيرة. لكن الشيفرة نفسها تفعل تمامًا ما كانت تفعله، لأن لا شيء من ذلك يغيّر معنى البرنامج.
التوفير حقيقي. فالنص البرمجي المقروء معظمه مسافات وأسماء، وكلاهما بايتات يدفعها زوارك في كل زيارة. لذلك يصل ملف ينخفض من 40 كيلوبايت إلى 18 أسرع إلى الهاتف وعبر الاتصال البطيء وإلى الطرف الآخر من العالم.
تحلل هذه الأداة شيفرتك بدل أن تخمّن. فهي تبني شجرة بناء جملة، وتعيد تسمية ما يمكن إعادة تسميته بأمان، وتحذف ما لا يمكن الوصول إليه، وتحسب مسبقًا ما يمكن حسابه، ثم تعيد قراءة إجابتها للتحقق منها. وتشرح الأقسام التالية كل خطوة، بما في ذلك أين تتوقف عمدًا.
يعيش المصغّر أو يموت حسب المكان الذي تنتهي فيه العبارات فعلًا. ويُعد مرجع MDN للقواعد المعجمية في JavaScript دليل القواعد لذلك.
متى تصغّر JavaScript
صغّر في النهاية، لا في البداية أبدًا. فأنت تريد الملف المقروء في محررك والصغير على خادمك. لذلك احتفظ بالأصل، وانشر المخرجات، ولا تعدّل النسخة المصغّرة يدويًا أبدًا.
يهم ذلك أكثر في النصوص البرمجية التي تحمّلها كل صفحة. على سبيل المثال، تستحق الحزمة المشتركة التي ينزّلها كل زائر اهتمامًا أكبر من نص برمجي في صفحة لا يفتحها أحد.

ما لن يفعله مصغّر JS هذا
لن يعيد تسمية أي شيء لا يستطيع إثبات أمانه. فإذا احتوى ملفك على كتلة `with` أو استدعاء مباشر لـeval، يمكن البحث عن الاسم كنص أثناء تشغيل الشيفرة، ولا يستطيع أي محلل تتبع ذلك. وفي هذه الملفات تتوقف إعادة التسمية للملف كله وتخبرك الأداة بالسبب، بدل نشر إعادة تسمية تنكسر في بيئة الإنتاج.

لن يعيد تسمية أسمائك في المستوى الأعلى ما لم تحدد الخانة. فالشيفرة الملصقة غالبًا نص برمجي تقليدي، تصبح فيه الدالة في المستوى الأعلى خاصية لـwindow قد يستدعيها ملف آخر باسمها. أما داخل وحدة أو IIFE فلا شيء من الخارج يصل إلى تلك الأسماء، لذلك يمنحك الخيار هناك بايتات مجانية.

لن يمس المتغيرات العامة أو واجهات المتصفح. فـwindow وdocument وconsole ليست ملكك لتعيد تسميتها، لذلك تبقى كما كُتبت، مع كل ما هو مستورد أو مصدّر أو غير مُعرّف في الملف الذي أعطيته.
ملاحظة حول خرائط المصدر
لا تكتب هذه الأداة خرائط المصدر بعد، لذلك سيذكر تتبع المكدس من مخرجات معاد تسميتها الدوال بأسمائها القصيرة. وإذا كنت تحتاج إلى تتبعات مقروءة أكثر من البايتات الأخيرة، فأوقف إعادة التسمية؛ إذ تستمر المراحل الأخرى في العمل وتحتفظ بأسمائك الأصلية.
صغّر JavaScript في أربع خطوات
لا تثبيت ولا تسجيل ولا انتظار. يعمل كل شيء في علامة التبويب المفتوحة لديك.
- 1
أضف شيفرتك
الصق نصًا برمجيًا في المحرر، أو أفلت ملفات .js في تبويب الرفع. والطريقان يعملان بالطريقة نفسها.
- 2
اختر ما يُحذف
تُحذف التعليقات افتراضيًا، كما تعمل إعادة التسمية وحذف الشيفرة غير المستخدمة وطي الثوابت. ويمكنك أيضًا حذف استدعاءات console وعبارات debugger إذا كنت تنشر للإنتاج.
- 3
اضغط تصغير
تحلل الأداة ملفك كله، وتعيد كتابة الشجرة، ثم تعيد قراءة إجابتها قبل أن تعرضها عليك.
- 4
انسخ أو نزّل
خذ النتيجة نصًا، أو احفظها كملف .min.js. وفي الأثناء يبقى أصلك تمامًا كما تركته.
مصغّر JavaScript يتحقق من عمله بنفسه
تعطيك معظم الأدوات ملفًا وتأمل. أما هذه فتقرأ النتيجة قبل أن تراها أنت.
تتحقق في كل تشغيل
بعد التصغير تعيد تحليل مخرجاتها إلى شجرة بناء جملة وتقارنها بأصلك: كل اسم ما زالت الشيفرة تستدعيه، وشكل الشجرة نفسها. وإذا انحرف أي شيء، تقول ذلك وتعيد إليك أصلك بدل أن تصمت.
تفهم بناء الجملة الحقيقي
تُقرأ القوالب النصية والتعبيرات النمطية وحقول الأصناف والتسلسل الاختياري وBigInt كلها بشكل صحيح. لذلك لا تُخلط الشرطة المائلة بالتعليق أبدًا.
تحترم الفواصل المنقوطة
حيث تضيف JavaScript فاصلة منقوطة نيابة عنك، يبقى فاصل السطر. ولأن هذا الفاصل يكلف بايتًا واحدًا، فالاحتفاظ به مجاني وأكثر أمانًا أيضًا.
تبقى ملفاتك في هذه العلامة
لا تغادر شيفرتك علامة التبويب أبدًا. لا يوجد طلب ولا تخزين ولا سجل، لذلك يمكنك لصق حتى العمل الخاص هنا بأمان.
تحتفظ بتراخيصك
تبقى تعليقات التنويه المعلّمة بعلامة تعجب أو @license أو @preserve في الملف. لذلك يمكنك تصغير شيفرة يجب أن تنسبها لأصحابها.
تعرض الرقم الحقيقي
ترى الحجم المضغوط بـgzip إلى جانب الحجم الخام، لأن gzip هو ما يسافر فعلًا إلى زائرك.
الاستفادة القصوى من مصغّر JS هذا
تُبقي بعض العادات الصغيرة البناء المصغّر قابلًا للتوقع.
- احتفظ بالأصل. عدّل دائمًا الملف المقروء. وبذلك تبقى النسخة المصغّرة شيئًا تولّده، لا شيئًا تصونه.
- صغّر في النهاية. شغّله بعد أداة التجميع وبعد الاختبارات. وإلا فستختبر ملفًا وتنشر آخر.
- قدّمه مضغوطًا بـgzip. يتراكم التصغير والضغط معًا. ونتيجة لذلك ينخفض حجم النقل كثيرًا عن حجم الملف على القرص.
- احذف استدعاءات console عن قصد. هذا الخيار معطل افتراضيًا، لأن سطر التسجيل يحمل أحيانًا وظيفة. فعّله حين تعرف أن الأمر ليس كذلك.
- راقب شارة التحقق. إذا قالت يومًا إن تشغيلًا ما لم يُتحقق منه، فلا تنشر ذلك الملف. بدلًا من ذلك، أرسل إلينا الحالة واحتفظ بأصلك.
- انتبه لتنويهات الترخيص. أبقِ خيار التنويهات مفعّلًا حين تحمل شيفرتك إشعار إسناد يجب الاحتفاظ به.
أخطاء تفسد البناء المصغّر
كل قصة تقريبًا من نوع "المصغّر أفسد موقعي" هي واحدة من هذه الثلاث.
تعديل الملف المصغّر
تختفي التغييرات هناك في البناء التالي. لذلك فمكان الإصلاح دائمًا هو المصدر.
الاعتماد على أسماء الدوال
الشيفرة التي تقرأ fn.name، أو تطابق اسم صنف كنص، تنكسر مع أي مصغّر يعيد التسمية، بما فيه هذا. لذلك أوقف إعادة التسمية لتلك الملفات، أو توقف عن الاعتماد على الاسم.
التصغير مرتين
تمرير ملف مصغّر أصلًا مرة أخرى لا يوفر شيئًا، بل يجعل قراءة المقارنة أصعب فقط.
الأسئلة الشائعة عن تصغير JavaScript
هل سيفسد تصغير JavaScript شيفرتي؟
لا ينبغي ذلك، والأداة تتحقق بدل أن تفترض. فهي تعيد تحليل مخرجاتها وتقارنها بأصلك، سواء الأسماء التي تستدعيها الشيفرة أو شكل الشجرة، لذلك تلتقط سلسلة نصية تالفة أو قوسًا مفقودًا أو إعادة تسمية التقطت المتغير الخطأ وتبلغ عنها. وإذا لم يجتز تشغيل ما التحقق، تستعيد أصلك دون أي تغيير.
كم سيصغر ملفي؟
تنخفض الشيفرة المقروءة عادةً بين 40 و60 بالمئة، وتعرض لك الأداة الرقم الدقيق لملفك. الشيفرة كثيرة التعليقات ذات الأسماء الطويلة توفر أكثر؛ أما الشيفرة المضغوطة أصلًا فتوفر أقل بكثير، لأن ما بقي لحذفه أقل.
هل تعيد تسمية المتغيرات مثل الأدوات الأخرى؟
نعم. تحلل كل نطاق في الملف وتمنح المتغيرات المحلية والمعاملات والدوال أسماء قصيرة، وأقصرها لما يتكرر أكثر. ولا يُعاد أبدًا تسمية المتغيرات العامة وواجهات المتصفح مثل window وdocument والاستيرادات والتصديرات؛ كما أنه إذا احتوى الملف على كتلة `with` أو eval مباشر، حيث يمكن البحث عن الاسم كنص أثناء التشغيل، تتوقف إعادة التسمية كليًا وتشرح لك الأداة السبب.
هل تُرفع شيفرتي إلى أي مكان؟
لا. تعمل الأداة كلها داخل علامة تبويب متصفحك. لا يوجد طلب ولا تخزين ولا سجل، لذلك يمكنك لصق عمل لا يُسمح لك بمشاركته بأمان.
هل يمكنني تصغير عدة ملفات دفعة واحدة؟
نعم. افتح تبويب الرفع وأفلت ما تشاء من ملفات .js أو .mjs أو .cjs. تصغّر الأداة كل ملف على حدة، ويمكنك تنزيلها واحدًا تلو الآخر.
هل تتعامل مع JavaScript الحديثة؟
نعم. تُقرأ الوحدات والأصناف والحقول الخاصة والقوالب النصية والتسلسل الاختياري ودمج القيم الفارغة وBigInt وفواصل الأرقام كلها بشكل صحيح. لكن JSX وTypeScript ليستا JavaScript، لذلك حوّلهما أولًا.
أدوات أخرى يمكنك استخدامها الآن
كل واحدة منها تعمل في متصفحك ولا تطلب منك شيئًا.
ضغط SVG
صغّر ملفات SVG أو الشيفرة الملصقة، وأزل أي نصوص برمجية مخبأة داخلها.
افتح الأداة ←محوّل PNG إلى WebP
حوّل دفعة من الصور إلى صيغة أخف مع الحفاظ على الشفافية.
افتح الأداة ←مولّد كلمات المرور
أنشئ كلمة مرور قوية وعشوائية أو عبارة مرور يمكنك نطقها بصوت عالٍ.
افتح الأداة ←
صغّر نصك البرمجي التالي في ثوانٍ
الصق شيفرتك، واضغط زرًا واحدًا، وتحقق من التوفير بنفسك. لا يُرفع أي شيء ولا يُحفظ أي شيء.