صغّر مسافات JavaScript وقِس انخفاض الحجم
تزيل أداة تصغير مسافات JavaScript هذه تعليقات الأسطر والكتل ومسافات التنسيق التي لا يحتاج إليها التنفيذ.
شغّل الأداة مجانًا
وهي تحافظ على السلاسل النصية وقوالب النص والتعابير النمطية والعوامل وحدود المعرّفات، كما تحافظ على فواصل الأسطر التي قد تؤثر في الإدراج التلقائي للفاصلة المنقوطة. تتضمن النتيجة الشيفرة المضغوطة وعدد بايتات UTF-8 قبل التصغير وبعده ونسبة التوفير. وتفيدكم حين تحتاجون إلى ضغط يمكن توقعه من دون إعادة تسمية المعرّفات أو إعادة كتابة الشيفرة أو تثبيت تبعيات أو استعمال الشبكة أو إنشاء مسار bundling كامل.
اضغطوا المصدر من دون إعادة كتابة البرنامج
تؤدي هذه الإمكانية مهمة محددة: إزالة التعليقات وتقليص المسافات غير المؤثرة. فهي لا تعيد تسمية المتغيرات، ولا تختصر الثوابت، ولا تعيد ترتيب التعابير، ولا تغيّر أسماء الخصائص، ولا تحوّل الصياغة الحديثة إلى إصدار أقدم. ويسهّل هذا النطاق المحدود فحص النتيجة ومقارنتها بالأصل. أرسلوا JavaScript في الحقل javascript، أو استعملوا الاسمين البديلين code أو text، لتحصلوا على شيفرة مضغوطة وقياسات UTF-8 دقيقة. يتعرّف الماسح على السلاسل المحاطة بعلامات الاقتباس وقوالب النص والتعابير النمطية قبل تفسير علامات التعليقات، لذلك يبقى عنوان URL داخل سلسلة أو الشرطة داخل تعبير نمطي جزءاً من بيانات البرنامج. لا تعاد المسافة إلا عندما يؤدي التحام رمزين متجاورين إلى تكوين رمز مختلف. تبقى المعرّفات منفصلة، بينما يختفي التنسيق حول الفواصل والأقواس المعقوفة ومعظم العوامل. هذا ضغط لا تمويه؛ فالأسماء والبنية تظلان مقروءتين، ولا تشارك خدمة شبكة خفية أو نماذج غير حتمية في النتيجة.
حافظوا على الرموز وفواصل الأسطر ذات الدلالة
تكون المسافات اختيارية غالباً في JavaScript، لكنها ليست عديمة المعنى دائماً. فدمج أحرف المعرّفات قد ينشئ اسماً آخر، وضم علامتي الجمع قد ينشئ عامل زيادة، وحذف السطر الجديد بعد return أو throw أو break أو continue أو yield قد يغيّر تفسير الإدراج التلقائي للفاصلة المنقوطة. لذلك تقسم الأداة المدخل إلى رموز وتتخذ قراراً عند كل حد، بدلاً من تطبيق تعبير نمطي شامل. وهي تحفظ فواصل الأسطر المهمة لهذه الحالات وتفصل العوامل الملتبسة. لا تُعد العلامات تعليقات إلا خارج السلاسل وقوالب النص والتعابير النمطية. وفي المسح نفسه تُفحص المحددات: يجب أن يطابق كل قوس دائري أو مربع أو معقوف مغلق أحدث قوس مفتوح من نوعه. ينتج عن المحدد المنفرد أو المتداخل خطأً إدخالياً بدلاً من شيفرة مشكوك فيها. كما تفشل التعليقات والسلاسل والقوالب والتعابير النمطية غير المكتملة برسالة واضحة. هذا تحقق بنيوي وليس محلل JavaScript كاملاً، لذا استعملوا مصدراً صحيح الصياغة يحتاج إلى ضغط محافظ.
قيسوا التوفير وادمجوا نتيجة حتمية
تعرض الاستجابة original_bytes وminified_bytes بترميز UTF-8، وهو القياس الملائم للملفات المنقولة عبر HTTP أو المحفوظة كموارد ويب. وتعرض أيضاً reduction_percent مقرباً إلى منزلتين عشريتين لتسهيل الفحوص ولوحات المتابعة وتقارير الإصدارات. ولأن الخوارزمية حتمية، فإن المدخل نفسه يعيد دائماً الشيفرة نفسها والأعداد نفسها. يستطيع مسار بناء أن يرسل شيفرة مولدة، ويكتب حقل javascript المعاد في مجلد المخرجات، ويفرض حداً أدنى للتوفير من دون تثبيت حزمة تصغير. ويمكن لنظام توثيق ضغط الأمثلة المضمنة، كما يمكن لنشر خفيف تقليل أدوات مكتوبة يدوياً من دون bundling أو تغيير أسماء. تكلف الإمكانية $0.002 لكل طلب API، بينما يمكن لمسار المتصفح استعمال التطبيق النقي نفسه. شغّلوا اختبارات البرنامج الناتج قبل النشر كما تفعلون بعد أي معالجة للمصدر. تحمي الأداة الحدود المعجمية وتوازن المحددات، لكن الاختبارات تظل أقوى تأكيد للشيفرة التي تعتمد على سياقات نحوية نادرة أو سلوك خاص ببيئة التشغيل.
حالات الاستخدام
ضغط مورد مولد للمتصفح
أزيلوا التعليقات والتنسيق من JavaScript المولد قبل نشره، مع إبقاء المعرّفات مقروءة لأغراض التشخيص.
تقليل نصوص الأدوات المستقلة
خفّضوا حجم نقل نص صغير من دون اعتماد bundler أو مبدّل أسماء المتغيرات أو مرحلة تبعيات ثقيلة.
تسجيل التوفير في المصدر
سجّلوا البايتات الأصلية والمصغرة ونسبة التخفيض ضمن تقرير إصدار أو فحص جودة آلي.
الأسئلة الشائعة
ما الذي تزيله هذه الإمكانية؟
تزيل تعليقات الأسطر والكتل والمسافات غير اللازمة للفصل بين الرموز وبعض حدود الإدراج التلقائي للفاصلة المنقوطة.
هل تعيد تسمية المتغيرات أو تغيّر التعابير؟
لا. إنها تنفذ ضغطاً معجمياً محافظاً فقط، ولا تعيد التسمية أو تختصر الثوابت أو ترتب الشيفرة أو تحوّل الصياغة.
كيف تُحسب نسبة تقليل الحجم؟
يقاس الحجمان ببايتات UTF-8، ثم تقسم قيمة الفرق على الحجم الأصلي وتقرب النسبة إلى منزلتين عشريتين.
ماذا يحدث إذا كانت المحددات غير متوازنة؟
يفشل الطلب بخطأ إدخال غير صالح عندما تكون الأقواس الدائرية أو المربعة أو المعقوفة منفردة أو متداخلة خطأً.
هل تزال علامات التعليقات داخل السلاسل؟
لا. تُمسح السلاسل وقوالب النص والتعابير النمطية بوصفها قيماً حرفية، ولذلك تبقى الشرطات الداخلية كما هي.
ما تكلفة طلب API؟
تكلفة كل طلب API هي $0.002. المدخلات التي تفشل في التحقق تعيد أخطاءً بدلاً من شيفرة مصغرة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev2/minify-js \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"javascript":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n"}'const res = await fetch("https://api.kit.forhosting.com/dev2/minify-js", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/minify-js",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/minify-js", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"javascript":"function add(a, b) {\\n // Return the sum\\n return a + b;\\n}\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"javascript":"function add(a, b) {\n // Return the sum\n return a + b;\n}\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/minify-js", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"javascript": "function add(a, b) {\n // Return the sum\n return a + b;\n}\n"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.minify_js",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |