# Cecil 9.18.0 : une fusion de configuration plus intelligente

[Cecil 9.18.0](https://github.com/Cecilapp/Cecil/releases/tag/9.18.0) revoit la façon dont votre configuration est fusionnée avec celle par défaut et avec celle des thèmes. L’objectif : **ne définir que ce que vous voulez modifier**, et obtenir un résultat prévisible.

### Configuration en couches

La configuration effective est désormais construite à partir de couches, chacune surchargeant les précédentes :

1. configuration par défaut de Cecil
2. configuration des thèmes
3. configuration du site (`cecil.yml`)
4. variables d’environnement (`CECIL_*`) et options de la ligne de commande

Les tableaux associatifs sont fusionnés clé par clé avec ceux par défaut : par exemple, ajouter un format à `layouts.translations.formats` ne supprime plus les chargeurs intégrés. Les thèmes peuvent également surcharger les valeurs par défaut intégrées, comme les pages par défaut, les générateurs et les formats de sortie.

Un tableau associatif peut être activé ou désactivé avec un simple booléen, sans perdre ses options :

```yaml
cache: false # équivalent à `cache: {enabled: false}`
```

### Listes de valeurs

Lorsque vous définissez une liste de valeurs (ex. : `pages.ext`, `output.pagetypeformats` ou `assets.images.responsive.widths`), elle **remplace** désormais la liste par défaut. Si un thème définit la même liste, vos valeurs sont **ajoutées** à celles du thème, car elles peuvent lui être nécessaires.

Pour **ajuster** une liste par défaut (ou d’un thème), utilisez un tableau associatif : `true` ajoute une valeur, `false` la retire.

```yaml
output:
  pagetypeformats:
    homepage:
      rss: true   # ajoute RSS
      atom: false # retire Atom
```

Les formats de sortie sont fusionnés par `name` : `- {name: rss, filename: feed}` ne surcharge donc que le `filename` du format RSS.

### Options obsolètes

Les options obsolètes sont désormais vérifiées avant la validation de la configuration, et sont **toutes** signalées en une fois, avec leur source et l’extrait à utiliser à la place :

````text
Deprecated configuration option(s) in "cecil.yml":
- Option `frontmatter` must be moved to:
  ```
  pages:
    frontmatter: yaml
  ```
- Option `pages.body.format` is deprecated and must be removed.
````

### Nouveau test `enabled` dans les templates

Un tableau associatif désactivé restant un tableau, utilisez le nouveau [test `enabled`](/fr/documentation/templates/reference/fonctions/#tests) pour vérifier une option dans les templates :

```twig
{% if config.cache is enabled %}
```

### Changements incompatibles

Vérifiez votre configuration avant de mettre à jour :

- Une liste de valeurs définie dans plusieurs fichiers `--config` est désormais remplacée par la dernière, au lieu d’être concaténée.
- Un site ne peut plus vider une liste d’un thème en la redéfinissant (`homepage: []`) : retirez chaque valeur avec `false`.
- La configuration d’un thème surcharge désormais les pages par défaut, les générateurs et les formats de sortie intégrés.
- `{% if config.cache %}` est vrai même lorsque le cache est désactivé avec `cache: false` : utilisez `{% if config.cache is enabled %}` à la place.

Exécutez `cecil show:config` pour afficher la configuration effective complète, valeurs par défaut incluses.

Consultez la [documentation de configuration](/fr/documentation/configuration/#priorite) pour plus de détails, et [mettez à jour Cecil](/fr/telecharger/#update) pour profiter de cette version.
