Basculer sur le registre de secours
Installer @fraza/* depuis registry.fraza.ca quand npmjs est indisponible ou par choix, puis revenir à npmjs.
Un projet installe @fraza/* depuis npmjs par défaut. Ce guide s'adresse à qui veut l'installer depuis le registre Fraza à la place : en urgence, pendant que npmjs ne sert plus les paquets (panne de npmjs, paquet retiré de npmjs), ou par choix.
Pourquoi c'est possible
Chaque version de @fraza/* publiée sur npmjs l'est aussi sur https://registry.fraza.ca/, en copie de secours, en lecture libre. Ce registre porte en plus des versions intermédiaires, publiées pour tester un changement, qui ne vont pas sur npmjs.
Les deux registres reçoivent le même fichier, octet pour octet : la commande de publication construit un seul tarball et l'envoie aux deux. Le package-lock.json vérifie l'empreinte (integrity) de chaque paquet installé. Comme l'empreinte est la même sur les deux registres, le lockfile reste valable après la bascule.
Les modules Pro (@fraza-pro/*) ne sont pas concernés : ils n'existent que sur https://registry.fraza.ca/.
Seules les versions publiées depuis la mise en place de npmjs existent aux deux endroits. Les versions plus anciennes ne sont que sur https://registry.fraza.ca/.
Basculer
Dans le projet :
npx fraza-update --registre secours
npm installfraza-update --registre secours fait deux changements, puis s'arrête sans rien mettre à jour :
- il ajoute
@fraza:registry=https://registry.fraza.ca/au.npmrcdu projet ; - il réécrit, dans
package-lock.json, l'adresse de chaque paquet@fraza/*:https://registry.npmjs.org/@fraza/...devienthttps://registry.fraza.ca/@fraza/....
La ligne de scope seule ne suffirait pas. Le lockfile garde l'adresse complète de chaque tarball, et npm ne la réécrit pas d'après une ligne de scope : npm ci retournerait chercher @fraza/core sur npmjs. L'empreinte, elle, ne change pas.
Committer ensuite .npmrc et package-lock.json : la machine de build suit au prochain déploiement. La tuile « Mise à jour » de l'admin lit alors la dernière version sur le même registre. La ligne @fraza:registry du .npmrc dit d'où vient @fraza/* : sans elle, c'est npmjs.
@fraza-pro/* n'est pas touché. Un projet qui a des modules Pro garde sa clé, qui sert aussi pour @fraza sur ce registre.
Sur un clone neuf, node_modules n'existe pas encore et npx fraza-update n'est pas disponible. Lancer la commande depuis le registre Fraza :
npx --yes "--@fraza:registry=https://registry.fraza.ca/" --package=@fraza/core fraza-update --registre secoursRevenir à npmjs
npx fraza-update --registre npmjs
npm installLa commande retire la ligne @fraza:registry du .npmrc et remet les adresses du lockfile sur npmjs. Committer les deux fichiers.
Un projet créé avant la publication sur npmjs pointe encore @fraza vers https://registry.fraza.ca/. La même commande le fait passer sur npmjs, à condition que ses versions de @fraza/* y soient publiées : lancer d'abord npx fraza-update si elles sont anciennes.
Un npx fraza-update lancé pendant la bascule peut installer une version intermédiaire, présente sur registry.fraza.ca seulement. Le lockfile la désigne alors, et npm ci échouerait après le retour sur npmjs. Dans ce cas, attendre que cette version ou une plus récente soit sur npmjs, puis relancer npx fraza-update après le retour.
Diagnostiquer
| Symptôme | Cause probable |
|---|---|
404 Not Found sur une version de @fraza/* après la bascule | Version absente du registre visé : publiée avant la mise en place des deux registres, ou retirée. Lancer npx fraza-update pour passer à une version présente. |
EINTEGRITY à l'installation | Le tarball du registre ne correspond pas à l'empreinte du lockfile. Ne pas forcer l'installation : signaler la version au mainteneur. |
npm ci cherche encore sur registry.npmjs.org | Le lockfile n'a pas été réécrit ou pas committé. Relancer npx fraza-update --registre secours, puis committer package-lock.json. |