Salta ai contenuti

Astro Docs

Questo generatore crea l’impalcatura di un sito di documentazione basato su Astro e il tema di documentazione Starlight. Configura la localizzazione, frammenti di contenuto riutilizzabili, link interni consapevoli della lingua e un plugin starlight-blog per impostazione predefinita.

Per impostazione predefinita, crea anche una pipeline di traduzione automatizzata basata su uno Strands Agent su Amazon Bedrock.

Puoi generare un nuovo sito di documentazione Astro in due modi:

  1. Installa il Nx Console VSCode Plugin se non l'hai già fatto
  2. Apri la console Nx in VSCode
  3. Clicca su Generate (UI) nella sezione "Common Nx Commands"
  4. Cerca @aws/nx-plugin - ts#astro-docs
  5. Compila i parametri richiesti
    • Clicca su Generate
    Parametro Tipo Predefinito Descrizione
    name Obbligatorio string docs Il nome del progetto di documentazione.
    directory string . La directory padre in cui viene posizionato il progetto di documentazione.
    subDirectory string - La sotto-directory in cui viene posizionato il progetto di documentazione. Il valore predefinito è il nome del progetto in formato kebab-case.
    noTranslation boolean Escludere la pipeline di traduzione automatica della documentazione (Strands Agent su Amazon Bedrock + un target di progetto `translate`).
    noBlog boolean Escludere il plugin `starlight-blog` e il post del blog di esempio.
    skipInstall boolean Salta l'installazione delle dipendenze dopo l'esecuzione del generatore.

    Per impostazione predefinita, il generatore crea la seguente struttura di progetto in docs/ nella radice del workspace (configurabile tramite le opzioni name, directory e subDirectory):

    • astro.config.mjs Configurazione Astro + Starlight (locali, sidebar, plugin blog)
    • tsconfig.json Estende astro/tsconfigs/strict con alias di percorso @components / @assets
    • project.json Progetto Nx con target build, start, preview (e translate se abilitato)
    • Directoryscripts
      • translate.ts Driver di traduzione — uno Strands agent con uno strumento file-editor con ambito (omesso con --noTranslation)
      • translate.config.json Locali sorgente/destinazione, pattern glob, id modello, regione (omesso con --noTranslation)
    • Directorysrc
      • Directorycomponents
        • link.astro Componente link consapevole della lingua (risolve i percorsi rispetto alla lingua corrente)
        • snippet.astro Componente caricatore di snippet consapevole della lingua
      • Directorycontent
        • Directorydocs
          • Directoryen
            • index.mdx Pagina di destinazione
            • Directoryguides
              • getting-started.mdx Guida di esempio che fa riferimento ai componenti link e snippet
            • Directoryblog
              • welcome.mdx Post del blog di esempio (omesso con --noBlog)
            • Directorysnippets
              • example.mdx Snippet riutilizzabile di esempio
      • Directorystyles
        • custom.css Override del tema Starlight
    • README.md README del progetto

    Il generatore utilizza per impostazione predefinita una singola lingua (en) e reindirizza l’URL radice ad essa. Per aggiungere altre lingue:

    1. Aggiungi una voce sotto locales in astro.config.mjs (ad esempio ko: { label: '한국어' }).
    2. Crea una directory corrispondente sotto src/content/docs/<locale>/.
    3. Popolala manualmente o utilizza il target di traduzione descritto di seguito.

    A meno che tu non abbia passato --noTranslation, il generatore aggiunge un target translate a project.json, quindi puoi eseguire:

    Terminal window
    pnpm nx translate docs -- --all
    pnpm nx translate docs -- --languages jp,ko
    pnpm nx translate docs -- --dry-run

    Quando eseguito senza --all, lo script traduce solo i file che sono cambiati dall’ultimo commit di traduzione sul branch corrente — il che significa che puoi rieseguirlo in sicurezza su ogni PR di documentazione senza ritradurre l’intero sito.

    Modifica scripts/translate.config.json per cambiare:

    CampoScopo
    sourceLanguageLingua da cui tradurre (predefinito en).
    targetLanguagesLingue verso cui tradurre. Vuoto per impostazione predefinita. Ad esempio ["fr", "de", "es", "ja", "ko"].
    docsDirPercorso della directory del contenuto della documentazione, relativo alla radice del progetto.
    includePattern glob (relativi a <docsDir>/<sourceLanguage>) per i file da tradurre.
    excludePattern glob da saltare.
    modelIdModello Bedrock da utilizzare per le traduzioni.
    awsRegionRegione AWS con cui è configurato il client Bedrock. Può anche essere impostato tramite AWS_REGION.
    concurrencyNumero massimo di invocazioni simultanee dell’agent.
    translationCommitMessageMarcatore del messaggio di commit per i commit di traduzione (predefinito docs: update translations).

    Il generatore fornisce un componente Link che risolve automaticamente i percorsi interni della documentazione rispetto alla lingua corrente, in modo che un’unica fonte di verità produca l’URL corretto in ogni lingua:

    import Link from '@components/link.astro';
    <Link path="guides/getting-started">Leggi la guida introduttiva</Link>

    I frammenti di contenuto riutilizzabili si trovano in src/content/docs/<locale>/snippets/. Il componente Snippet generato carica lo snippet che corrisponde alla lingua corrente:

    import Snippet from '@components/snippet.astro';
    <Snippet name="example" />

    Nessun workflow CI viene generato di default — aggiungine uno che:

    1. Configura le credenziali AWS con il permesso di invocare InvokeModel di Bedrock sul modello configurato.

    2. Esegue il target translate sulle pull request che toccano la documentazione nella lingua sorgente:

      Terminal window
      pnpm nx translate docs
    3. Esegue il commit delle traduzioni risultanti nel branch della PR. Il messaggio di commit deve corrispondere al valore translationCommitMessage in scripts/translate.config.json (predefinito docs: update translations) in modo che le successive esecuzioni incrementali possano rilevare il commit di base e ritradurre solo i file che sono cambiati da allora.