
# `build()`

Génère un site statique à partir d'un objet de configuration. Retourne un `GenerateStaticResult` décrivant ce qui a été écrit.

```typescript
import { build } from 'sovrium'

const result = await build({ name: 'my-site', pages: [{ name: 'Home', path: '/' }] })

console.log(result.outputDir) // "./static"
console.log(result.files.length)
```

Comme `start()`, `build()` valide d'abord face à `AppSchema` et rejette avec `Sovrium failed to build:` plutôt que d'émettre un site partiel.

## `GenerateStaticOptions`

| Propriété            | Description                                                      |
| -------------------- | ---------------------------------------------------------------- |
| `outputDir`          | Répertoire de sortie. Par défaut : `./static`.                   |
| `baseUrl`            | URL de base pour le sitemap et les liens canoniques.             |
| `basePath`           | Préfixe de chemin pour les déploiements en sous-répertoire.      |
| `deployment`         | Plateforme cible : `github-pages` ou `generic`.                  |
| `languages`          | Tableau des codes de langue à générer.                           |
| `defaultLanguage`    | Code de la langue par défaut.                                    |
| `generateSitemap`    | Génère `sitemap.xml`. Par défaut : `false`.                      |
| `generateRobotsTxt`  | Génère `robots.txt`. Par défaut : `false`.                       |
| `hydration`          | Émet le runtime d'hydratation côté client. Par défaut : `false`. |
| `generateManifest`   | Génère `manifest.json` pour les PWA. Par défaut : `false`.       |
| `bundleOptimization` | Stratégie de découpage : `split` ou `none`.                      |
| `publicDir`          | Répertoire de ressources statiques à copier dans la sortie.      |

:::callout
**`outputDir` diffère du CLI.** Appeler `build()` directement écrit par défaut dans `./static`, relatif au répertoire de travail. `sovrium build app.yaml` écrit plutôt par défaut dans un répertoire `dist/` _à côté du fichier de configuration_. Passez `outputDir` explicitement dès que les deux chemins coexistent dans un projet.
:::

## `GenerateStaticResult`

| Propriété   | Description                                                              |
| ----------- | ------------------------------------------------------------------------ |
| `outputDir` | Chemin du répertoire de sortie effectivement écrit.                      |
| `files`     | Chaque fichier généré pendant le build (HTML, CSS, ressources, sitemap). |

Le tableau `files` est le manifeste de déploiement — énumérez-le plutôt que de reparcourir le répertoire, puisqu'il exclut tout ce qui s'y trouvait déjà.

## Un build statique complet

```typescript
import { build } from 'sovrium'
import type { GenerateStaticResult } from 'sovrium'

const result: GenerateStaticResult = await build(
  {
    name: 'my-site',
    pages: [
      {
        name: 'Home',
        path: '/',
        components: [
          { type: 'hero', content: 'Welcome' },
          { type: 'text', content: 'Built with Sovrium.' },
        ],
      },
    ],
  },
  {
    outputDir: './dist',
    baseUrl: 'https://example.com',
    deployment: 'github-pages',
    generateSitemap: true,
    generateRobotsTxt: true,
  }
)

console.log(`Wrote ${result.files.length} files to ${result.outputDir}`)
```

`deployment: 'github-pages'` ajoute les fichiers attendus par cet hébergeur — notamment un marqueur `.nojekyll`, sans lequel les répertoires commençant par un tiret bas seraient avalés par Jekyll au lieu d'être servis.

## Recherche dans les pages

Si une page déclare un composant `pageSearch`, `build()` exécute aussi l'indexeur de recherche et écrit un répertoire `sovrium-search/` dans la sortie. Les fichiers supplémentaires apparaissent dans `result.files`. Sans un tel composant, rien n'est émis et aucun coût d'indexation n'est payé — la fonctionnalité est conditionnée par la configuration, pas par une option.

## Pages associées

- [Aperçu de l'API TypeScript](/fr/docs/typescript) — `AppConfig` et les autres fonctions.
- [Commandes de projet](/fr/docs/cli-project) — `sovrium build` et ses variables `SOVRIUM_*`.
- [SEO et métadonnées](/fr/docs/seo-meta) — ce qu'alimentent `baseUrl` et le sitemap.
- [Aperçu de la recherche](/fr/docs/search-overview) — le composant `pageSearch`.
