# Faire évoluer un module installé

Un module installé ne rejoue pas son installation. Ajouter une page,
une migration ou un réglage demande donc **de monter sa version**.

## La règle

Dans `module.php` :

```php
'version' => '1.1',   // était 1.0
```

Le back-office compare cette valeur à celle enregistrée en base. Dès
qu'elle est supérieure, un bouton **« Mettre à jour »** apparaît sur
la fiche du module, dans Technique › Modules.

## Ce que la mise à jour fait

1. **Migrations en attente** — celles que le module a gagnées depuis.
2. **Pages manquantes** — enregistrées, avec leur entrée de menu et
   les permissions des administrateurs.
3. **Nouveaux réglages** — semés sans écraser ceux que le marchand a
   modifiés.

Elle est **idempotente** : la lancer deux fois ne crée rien en double.

## Ce qu'elle ne fait pas

Elle ne supprime rien. Une page retirée de `module.php` reste en base
— c'est volontaire : un marchand peut y avoir attaché des permissions
ou des liens.

Pour retirer une page, désinstallez et réinstallez le module. Les
données de la boutique survivent à cette opération, mais vérifiez-le
pour votre module avant de le conseiller.

## En résumé

| Vous ajoutez | Montez la version |
|---|---|
| une page dans `pages` | oui |
| une migration dans `database/migrations/` | oui |
| un réglage dans `settings` | oui |
| du code, une vue, un style | non |

Le code est rechargé à chaque requête. Seul ce qui touche à la **base
de données** demande une mise à jour.
