Mettre à jour un projet
Monter @fraza/core, les modules et les paquets tiers d'un projet existant, et vérifier que rien n'a dérivé.
Cette page couvre la mise à jour d'un projet déjà en service. Pour une installation neuve, voir Installation.
En une commande
npx fraza-updateElle repère @fraza/core et les modules installés, résout un jeu de versions compatibles entre elles, affiche ce qui change, installe, puis enchaîne :
npx fraza-modules sync # régénère les manifestes
npx fraza-db migrate # applique les migrations en attente
npx fraza-doctor # vérifie que rien n'a dérivéC'est tout. Le reste de cette page explique ce qui se passe, et quoi faire quand quelque chose accroche.
Ce que la commande vous dit
Avant d'installer, elle affiche le tableau des montées et ce que le registre annonce de chacune : rupture, variable d'environnement ajoutée ou retirée, fichier de gabarit modifié, commande à lancer après.
Après avoir installé, elle lit les notes de version livrées dans les paquets et affiche le détail exact des versions franchies. Ces notes vivent dans node_modules/<package>/changelog.json, donc hors ligne, sans accès aux dépôts.
Les trois choses qui dérivent avec le temps
Le .env
Il est copié une seule fois, à la génération du projet. Une variable ajoutée par une version ultérieure du core, ou par un module installé après coup, n'y arrive jamais.
npx fraza-doctor # liste ce qui manque
npx fraza-doctor --fix # les ajoute, commentées, en fin de fichier--fix n'écrit que des lignes commentées : il ne peut pas changer le comportement du projet. Il ne modifie aucune valeur existante et ne supprime aucune ligne. Reste à décommenter et à renseigner ce qui concerne le projet.
Les fichiers d'amorçage
Le projet porte une dizaine de fichiers qui ne sont que des réexports du core, comme app/fraza/api/[...path]/route.js. Ils sont écrits une fois à la génération, et une évolution du core peut les rendre obsolètes.
fraza-doctor les compare au contrat que le core déclare. --fix réécrit ceux qui sont absents ou restés à une version antérieure, et laisse intact tout fichier au contenu qu'il ne reconnaît pas : si vous l'avez modifié, il est à vous.
instrumentation.js et app/layout.js ne sont jamais réécrits. Ils mêlent contrat d'amorçage et code du projet. Le doctor dit quelles lignes manquent, la correction est manuelle.
Exemple concret : app/fraza/[...path]/page.js porte une ligne d'import du manifeste des pages publiques. Un projet resté au réexport d'une ligne est remonté automatiquement par --fix. Sans cette mise à jour, toute page publique de module qui rend un composant client échoue sur « Could not find the module … in the React Client Manifest ».
Quand un fichier ainsi réécrit référence un manifeste de app/.fraza/ encore absent, le doctor le signale : enchaîne avec npx fraza-modules sync.
Le schéma de base
npx fraza-db status # appliquées, adoptées, en attente
npx fraza-db migrate # applique ce qui manqueSur une base initialisée avant l'arrivée des migrations, la première exécution pose une ligne de base et ne rejoue rien. Aucune donnée ne bouge. Voir Écrire une migration.
Les paquets tiers
next, react, sharp ne se montent pas à la dernière version disponible mais à la dernière que Fraza supporte.
npx fraza-update --depsLes bornes sont publiées par le core, voir Paquets supportés. Un projet sous le plancher est signalé comme bloquant par fraza-doctor.
Pour les alertes de sécurité, le doctor remonte chaque vulnérabilité jusqu'au paquet de premier niveau qui la tire et propose la montée plutôt qu'un overrides. Un overrides fige une version pour rien quand un correctif amont existe.
En intégration continue
npx fraza-update --check # code 1 s'il y a du retard
npx fraza-doctor # code 1 si un constat est bloquant
npx fraza-db status # code 1 s'il reste des migrations en attenteAucune de ces trois commandes n'écrit quoi que ce soit.
Sur un serveur de déploiement, la séquence utile après un npm ci est npx fraza-db migrate seul : le schéma est mis à niveau sans repasser par la création de tables.
Savoir qu'il y a quelque chose à faire
Le rappel au démarrage. Il n'installe rien. npm run dev affiche au plus une ligne quand une mise à jour existe. Il ne retarde jamais le démarrage : il montre le résultat du contrôle précédent et rafraîchit en arrière-plan.
Pour l'éteindre, poser FRAZA_UPDATE_CHECK=false dans le .env. Il est déjà muet hors terminal interactif et en intégration continue.
Pour un état complet à la demande, npx fraza-update liste les montées disponibles et npx fraza-doctor rapporte les constats du projet. Voir fraza-update et fraza-doctor.
Diagnostiquer
| Symptôme | Cause probable |
|---|---|
ERESOLVE sur un npm i @fraza/module-X | Le module exige un core plus récent. Passer par npx fraza-update, qui résout le jeu complet. |
| Un module n'apparaît plus dans l'admin | Manifeste périmé. npx fraza-modules sync. |
Fraza: <module> exige @fraza/core >= X au démarrage | Core trop ancien pour un module installé. npx fraza-update. |
| Une colonne attendue n'existe pas en base | Migration non appliquée. npx fraza-db status. |
| Le registre refuse la requête | Jeton absent ou expiré, requis pour les modules Pro (@fraza-pro). npm login --registry=https://registry.fraza.ca/ puis npx fraza-key. |