المؤلف:
    إنشاء:2026-06-11آخر تحديث:2026-09-12

    مسح موقع الويب

    يقوم الأمر scan بجلب عنوان URL عام، وقياس الحجم الإجمالي للصفحة، وتدقيق صحة i18n و SEO للصفحة. ينتج عنه تقرير بنقاط (0-100) يغطي سمات HTML، والروابط الأساسية، وعلامات hreflang، و robots.txt، و sitemap.xml، والروابط الداخلية المترجمة، ووزن اللغة لحزمة JavaScript.

    لا توجد تبعيات إضافية مطلوبة. عندما يكون puppeteer مثبتًا، يمكن للمسح التقاط أجزاء JavaScript التي يتم تحميلها بشكل كسول (lazy-loaded) لتحليل حزمة أكثر دقة؛ وإلا فإنه يتراجع عن فحص البرامج النصية المحملة بلهفة المعلن عنها في HTML.

    الاستخدام

    bash
    npx intlayer scan <url>
    

    مثال

    bash
    npx intlayer scan https://example.com
    

    نموذج المخرجات:

    plaintext
    🔍 Scanned https://example.com (basic mode)
    
    Score: 90/100
    Page size: 10.60 MB (HTML 42.31 KB)
    Locales: en, fr, es, de, …
    
    Checks:
      ✓ html lang attribute
      ✓ html dir attribute
      ✓ canonical link
      ✓ hreflang tags
      ✓ x-default hreflang
      ✓ localized internal links
      ⚠ all internal links localized
      ✓ current locale detected
      ✓ robots.txt present
      ✓ robots.txt keeps locale paths crawlable
      ✓ sitemap.xml present
      ✓ sitemap lists every locale
      ✓ sitemap has alternate links
      ✓ sitemap has x-default
    
    Bundle locale weight:
      Translations shipped: 120.50 KB
      Unused (other locales): 45.20 KB (37%)
    

    الخيارات

    <url> (مطلوب)

    عنوان URL المؤهل بالكامل للمسح (على سبيل المثال https://example.com).

    --no-deep

    تعطيل المسح العميق القائم على العرض.

    بشكل افتراضي ، يحاول الأمر استخدام puppeteer لعرض الصفحة في متصفح بدون رأس ، والتقاط أجزاء JavaScript التي يتم تحميلها بشكل كسول ، وقياس حجم نقل السلك الحقيقي. إذا لم يكن puppeteer مثبتًا ، يتراجع الأمر تلقائيًا إلى الوضع الأساسي.

    قم بتمرير --no-deep لفرض الوضع الأساسي حتى عند توفر puppeteer.

    مثال: npx intlayer scan https://example.com --no-deep

    --json

    إخراج نتيجة المسح الكاملة ككائن JSON بدلاً من تقرير منسق. مفيد للاستهلاك البرمجي أو خطوط أنابيب CI.

    مثال: npx intlayer scan https://example.com --json

    خيارات التكوين القياسية

    • --base-dir — الدليل الأساسي المستخدم لتحديد موقع ملف intlayer.config.*.
    • -e, --env — البيئة المستهدفة (على سبيل المثال development ، production).
    • --env-file — المسار إلى ملف .env مخصص.
    • --no-cache — تعطيل ذاكرة التخزين المؤقت للتكوين.
    • --ci — ينفّذ الأمر في كل مشروع Intlayer في الـ monorepo (أو في المشروع الحالي فقط عند التشغيل من مجلد مشروع). يمكن حقن بيانات اعتماد لكل مشروع عبر INTLAYER_PROJECT_CREDENTIALS، وهو كائن JSON يربط مسار كل مشروع بـ { "clientId", "clientSecret" }.
    • --verbose — تمكين التسجيل التفصيلي (افتراضي في وضع CLI).
    • --prefix — بادئة تسجيل مخصصة.

    ما يتم فحصه

    الفحصالوصفوزن النتيجة
    html langسمة <html lang="…"> موجودة9
    html dirسمة <html dir="…"> موجودة3
    canonical<link rel="canonical"> موجود10
    hreflangعلامات <link rel="alternate" hreflang="…"> موجودة9
    x-default hreflangبديل hreflang x-default موجود7
    localized linksيتضمن رابط داخلي واحد على الأقل شريحة لغة5
    all links localizedيتضمن كل رابط داخلي شريحة لغة5
    current localeيمكن اكتشاف لغة الصفحة3
    robots.txt presentيعيد /robots.txt استجابة 20010
    robots.txt locale pathsلا يتم حظر أي مسار لغة في robots.txt10
    sitemap.xml presentيعيد /sitemap.xml استجابة 20010
    sitemap locale coverageتظهر كل لغة مكتشفة في خريطة الموقع10
    sitemap alternatesتحتوي خريطة الموقع على روابط بديلة hreflang5
    sitemap x-defaultتحتوي خريطة الموقع على x-default hreflang5
    unused bundle contentلا تشحن حزمة JS بيانات لغة غير مستخدمة مفرطة9

    النتيجة النهائية هي المجموع الموزون لجميع الفحوصات الناجحة معبرًا عنها بنسبة مئوية (0-100).

    استخدام وظيفة المسح برمجياً

    يتم تصدير وظيفة scan أيضًا من @intlayer/cli بحيث يمكن استدعاؤها من البرامج النصية الخاصة بك:

    ts
    import { scan } from "@intlayer/cli";
    
    await scan("https://example.com", {
      deep: false,
      json: false,
    });
    

    للوصول إلى مستوى أدنى ، يعيد scanWebsite من @intlayer/engine/scan كائن ScanResult مهيكل:

    ts
    import { scanWebsite } from "@intlayer/engine/scan";
    
    const result = await scanWebsite("https://example.com", { deep: false });
    console.log(result.score, result.totalPageSize, result.events);