ضغط JS و CSS
الصق الشيفرة فتظهر النسخة المضغوطة أثناء الكتابة مع عدد الأحرف الموفَّرة.
الناتج المضغوط
كيف تستخدمه
- الصق JavaScript أو CSS في الصندوق — تظهر النسخة المضغوطة أثناء الكتابة، دون أي زر.
- اترك الصيغة على «تلقائي»، أو اختر JavaScript / CSS بنفسك إذا أخطأ الاكتشاف؛ يُعاد الضغط فورًا.
- يعرض رأس النتيجة عدد الأحرف قبل → بعد. انسخ الناتج أو نزّله كملف .js / .css.
مثال
المدخل
// إجمالي السلة مع الضريبة
const TAX = 0.08;
function total(items, coupon) {
let sum = 0;
for (const item of items) {
sum += item.price * item.qty;
}
if (coupon) {
sum -= coupon;
}
return { amount: sum * (1 + TAX), label: 'شحن مجاني' };
}بعد الضغط
const TAX=0.08;function total(items,coupon){let sum=0;for(const item of items){sum+=item.price*item.qty;}if(coupon){sum-=coupon;}return{amount:sum*(1+TAX),label:'شحن مجاني'};}حُذف التعليق وطُويت المسافات، لكن كل معرّف يحتفظ باسمه وكل نص يحتفظ بتهجئته. القراءة: 259 → 175 حرفًا (−32%).
القواعد والحدود والمسائل المعروفة
- المسافات والتعليقات فقط: لا إعادة تسمية ولا طيّ عبارات ولا حذف شيفرة. لذلك يعمل الناتج كما يعمل الأصل، لكنه أكبر من ناتج Terser.
- التعليقات التي تبدأ بـ /*! أو //! أو تحتوي على @license أو @preserve تبقى؛ وما عداها يُحذف.
- يبقى فاصل السطر حيث يؤثر حذفه في البرنامج: بعد return / throw / break / continue / yield / async، وبين عبارتين يُدرج JavaScript بينهما فاصلة منقوطة تلقائيًا (a\nb، x={}\nfoo()). ومعظم الشيفرة الأخرى تصبح سطرًا واحدًا.
- JavaScript يُمسح على مستوى الكلمات لا الصياغة: ما داخل السلاسل والتعبيرات النمطية والقوالب لا يُمسّ. ويُفرَّق بين القسمة والتعبير النمطي عبر الكلمة السابقة؛ والتعبير النمطي الممتد على سطرين يُعامل كقسمة.
- CSS لا يفقد إلا المسافات التي لا معنى لها: حول { } ; , > ~ ! وبعد ":"، وآخر ";" قبل "}". تبقى مسافة السليل (.a .b ليست .a.b)، ومسافة ما قبل ":" (a :hover ليست a:hover)، وتبقى مسافات calc(100% - 10px) لأنها جزء من الصياغة.
- لا إعادة تسمية (mangle) ولا حذف شيفرة ميتة ولا drop_console: كلها تغيّر السلوك، وأداة الضغط لا تفعل ذلك بصمت.
- غير مدعوم: HTML/SVG (المسافات تعتمد على <pre> و<textarea> والعناصر المضمّنة)، وإعادة كتابة أنواع TypeScript، وإدخال JSX/TSX، وخرائط المصدر، ودمج عدة ملفات. يُنبَّه عند اكتشاف JSX.
- السلسلة أو القالب أو التعليق أو url( غير المغلق في نهاية المدخل تنبيه لا خطأ: تُضغط بقية الشيفرة. والأقواس غير المتوازنة تنبيه أيضًا — هذه الأداة ليست مدقّق صياغة.
- تُحسب الأحرف بوحدات Unicode، لا بالبايت ولا بوحدات UTF-16؛ والنسبة تُقرَّب وتُعرض بصيغة +n% إذا كبر الناتج. كل شيء يجري في متصفحك: لا رفع ولا تخزين ولا معاملات في الرابط.
- فوق 200,000 حرف تتحدث النتيجة بعد نحو 0.6 ثانية من التوقف عن الكتابة، ولا يُقتطع النص. الخرج يستخدم LF بلا سطر جديد في النهاية.
أدوات ذات صلة
ما يحتاجه الناس عادةً بعد أن تصغر الشيفرة.