Aller au contenu

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 install

fraza-update --registre secours fait deux changements, puis s'arrête sans rien mettre à jour :

  • il ajoute @fraza:registry=https://registry.fraza.ca/ au .npmrc du projet ;
  • il réécrit, dans package-lock.json, l'adresse de chaque paquet @fraza/* : https://registry.npmjs.org/@fraza/... devient https://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 secours

Revenir à npmjs

npx fraza-update --registre npmjs
npm install

La 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ômeCause probable
404 Not Found sur une version de @fraza/* après la basculeVersion 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'installationLe 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.orgLe lockfile n'a pas été réécrit ou pas committé. Relancer npx fraza-update --registre secours, puis committer package-lock.json.

Sur cette page