Autore:
    Creazione:2026-06-11Ultimo aggiornamento:2026-09-12

    Scansiona il sito web

    Il comando scan recupera un URL pubblico, misura la dimensione totale della pagina e controlla la salute i18n e SEO della pagina. Produce un rapporto con punteggio (0–100) che copre attributi HTML, collegamenti canonici, tag hreflang, robots.txt, sitemap.xml, collegamenti interni localizzati e il peso della locale nel bundle JavaScript.

    Non sono richieste dipendenze aggiuntive. Quando puppeteer è installato, la scansione può catturare frammenti JavaScript caricati in modo ritardato (lazy-loaded) per un'analisi del bundle più precisa; in caso contrario, ricorre all'ispezione degli script caricati direttamente dichiarati nell'HTML.

    Utilizzo

    bash
    npx intlayer scan <url>
    

    Esempio

    bash
    npx intlayer scan https://example.com
    

    Esempio di output:

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

    Opzioni

    <url> (richiesto)

    L'URL completo da scansionare (ad esempio, https://example.com).

    --no-deep

    Disabilita la scansione approfondita basata sul rendering.

    Per impostazione predefinita, il comando tenta di utilizzare puppeteer per eseguire il rendering della pagina in un browser headless, catturare frammenti JavaScript caricati in modo ritardato e misurare la dimensione reale del trasferimento. Se puppeteer non è installato, il comando ricorre automaticamente alla modalità base.

    Passa --no-deep per forzare la modalità base anche quando puppeteer è disponibile.

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

    --json

    Mostra il risultato completo della scansione come oggetto JSON invece di un rapporto formattato. Utile per l'integrazione programmatica o pipeline di CI.

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

    Opzioni di configurazione standard

    • --base-dir — Directory di base utilizzata per individuare il file intlayer.config.*.
    • -e, --env — Ambiente di destinazione (ad esempio, development, production).
    • --env-file — Percorso di un file .env personalizzato.
    • --no-cache — Disabilita la cache di configurazione.
    • --ci — Esegue il comando in ogni progetto Intlayer del monorepo (o solo in quello corrente se lanciato da una directory di progetto). Le credenziali per progetto possono essere iniettate tramite INTLAYER_PROJECT_CREDENTIALS, un oggetto JSON che associa ogni percorso di progetto a { "clientId", "clientSecret" }.
    • --verbose — Abilita la registrazione dettagliata (impostazione predefinita in modalità CLI).
    • --prefix — Prefisso di registro personalizzato.

    Cosa viene controllato

    ControlloDescrizionePeso del punteggio
    html langL'attributo <html lang="…"> è presente9
    html dirL'attributo <html dir="…"> è presente3
    canonical<link rel="canonical"> è presente10
    hreflangI tag <link rel="alternate" hreflang="…"> sono presenti9
    x-default hreflangEsiste un'alternativa hreflang x-default7
    localized linksAlmeno un collegamento interno include un segmento di lingua5
    all links localizedOgni collegamento interno include un segmento di lingua5
    current localeLa lingua della pagina può essere rilevata3
    robots.txt present/robots.txt restituisce una risposta 20010
    robots.txt locale pathsNessun percorso di lingua è bloccato in robots.txt10
    sitemap.xml present/sitemap.xml restituisce una risposta 20010
    sitemap locale coverageOgni lingua rilevata appare nella sitemap10
    sitemap alternatesLa sitemap contiene collegamenti alternativi hreflang5
    sitemap x-defaultLa sitemap contiene un x-default hreflang5
    unused bundle contentIl bundle JS non contiene dati di lingua inutilizzati eccessivi9

    Il punteggio finale è la somma pesata di tutti i controlli superati espressa in percentuale (0–100).

    Utilizzo programmatico della funzione di scansione

    La funzione scan viene anche esportata da @intlayer/cli per essere richiamata dai tuoi script:

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

    Per l'accesso di livello inferiore, scanWebsite da @intlayer/engine/scan restituisce un oggetto ScanResult strutturato:

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