Auteur:
    Création:2026-06-11Dernière mise à jour:2026-09-12

    Scanner le site web

    La commande scan récupère une URL publique, mesure la taille totale de la page et audite la santé i18n et SEO de la page. Elle produit un rapport avec un score (0–100) couvrant les attributs HTML, les liens canoniques, les balises hreflang, robots.txt, sitemap.xml, les liens internes localisés et le poids des locales dans le bundle JavaScript.

    Aucune dépendance supplémentaire n'est requise. Lorsque puppeteer est installé, le scan peut capturer les morceaux de JavaScript chargés à la demande (lazy-loaded) pour une analyse plus précise du bundle ; sinon, il se replie sur l'inspection des scripts chargés directement déclarés dans le HTML.

    Utilisation

    bash
    npx intlayer scan <url>
    

    Exemple

    bash
    npx intlayer scan https://example.com
    

    Exemple de sortie :

    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%)
    

    Options

    <url> (requis)

    L'URL complète à scanner (par exemple, https://example.com).

    --no-deep

    Désactive le scan approfondi basé sur le rendu.

    Par défaut, la commande tente d'utiliser puppeteer pour rendre la page dans un navigateur headless, capturer les morceaux de JavaScript chargés à la demande et mesurer la taille réelle de transfert. Si puppeteer n'est pas installé, la commande se replie automatiquement sur le mode basique.

    Passez --no-deep pour forcer le mode basique même lorsque puppeteer est disponible.

    Exemple : npx intlayer scan https://example.com --no-deep

    --json

    Affiche le résultat complet du scan sous forme d'objet JSON au lieu d'un rapport formaté. Utile pour une consommation programmatique ou des pipelines CI.

    Exemple : npx intlayer scan https://example.com --json

    Options de configuration standard

    • --base-dir — Répertoire de base utilisé pour localiser le fichier intlayer.config.*.
    • -e, --env — Environnement cible (par exemple, development, production).
    • --env-file — Chemin vers un fichier .env personnalisé.
    • --no-cache — Désactiver le cache de configuration.
    • --ci — Exécute la commande dans chaque projet Intlayer du monorepo (ou uniquement le projet courant si lancée depuis son répertoire). Des identifiants par projet peuvent être injectés via INTLAYER_PROJECT_CREDENTIALS, un objet JSON associant chaque chemin de projet à { "clientId", "clientSecret" }.
    • --verbose — Activer le journal détaillé (par défaut en mode CLI).
    • --prefix — Préfixe de journal personnalisé.

    Ce qui est vérifié

    VérificationDescriptionPoids du score
    html langL'attribut <html lang="…"> est présent9
    html dirL'attribut <html dir="…"> est présent3
    canonical<link rel="canonical"> est présent10
    hreflangLes balises <link rel="alternate" hreflang="…"> sont présentes9
    x-default hreflangUne alternative hreflang x-default existe7
    localized linksAu moins un lien interne inclut un segment de langue5
    all links localizedChaque lien interne inclut un segment de langue5
    current localeLa langue de la page peut être détectée3
    robots.txt present/robots.txt renvoie une réponse 20010
    robots.txt locale pathsAucun chemin de langue n'est bloqué dans robots.txt10
    sitemap.xml present/sitemap.xml renvoie une réponse 20010
    sitemap locale coverageChaque langue détectée apparaît dans le sitemap10
    sitemap alternatesLe sitemap contient des liens alternatifs hreflang5
    sitemap x-defaultLe sitemap contient un hreflang x-default5
    unused bundle contentLe bundle JS ne contient pas trop de données de langues non utilisées9

    Le score final est la somme pondérée de toutes les vérifications réussies exprimée en pourcentage (0–100).

    Utilisation programmatique de la fonction de scan

    La fonction scan est également exportée depuis @intlayer/cli afin de pouvoir être appelée depuis vos propres scripts :

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

    Pour un accès de niveau inférieur, scanWebsite de @intlayer/engine/scan renvoie un objet ScanResult structuré :

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