Registre npm

Synchronisation du token du registre privé @lrvo entre ~/.npmrc et le .npmrc du projet.

core/registry porte les outils du token du registre npm privé https://registry.lrvo.app/. Il alimente la commande lrvo-key.

Le module est exposé sous @lrvo/core/registry, en serveur uniquement : il lit ~/.npmrc et écrit le .npmrc du projet, il ne doit jamais entrer dans un bundle client. Son consommateur principal reste le binaire lrvo-key ; la tuile de mise à jour du tableau de bord s'en sert pour lire le token en lecture seule.

Le problème qu'il résout

npm login dépose un token dans ~/.npmrc. Le .npmrc du projet, lui, doit porter le token directement :

//registry.lrvo.app/:_authToken=<token>

Ce .npmrc est suivi par git par défaut, ce qui suppose un dépôt privé : voir Secrets et git. Il faut malgré tout un moyen de le reconstruire à partir du token global, après un renouvellement ou sur un serveur de build qui ne le reçoit pas avec le clone.

API

FonctionRôle
readNpmrcToken({ host? })Retourne le token trouvé dans ~/.npmrc, ou null.
readProjectNpmrcToken({ cwd?, host? })Retourne le token trouvé dans le .npmrc du projet, ou null.
resolveRegistryToken({ cwd?, host? })Le .npmrc du projet d'abord, celui de l'utilisateur ensuite. null si aucun. Ne lève jamais.
writeNpmrcToken(token, { cwd?, host? })Écrit ou remplace la ligne _authToken dans le .npmrc du projet.
syncKey({ cwd?, host? })Enchaîne les deux. Lève si aucun token n'est trouvé.
maskToken(token)Version masquée, pour l'affichage.
REGISTRY_HOSTConstante : hôte du registre.

syncKey crée le .npmrc avec le scope @lrvo et le token s'il n'existe pas, sinon il ajoute ou remplace la seule ligne _authToken. Le reste du fichier est préservé.

L'ordre de recherche de resolveRegistryToken compte, et il est l'inverse de celui de syncKey. Sur une machine de développement les deux fichiers existent et portent la même valeur. Dans un conteneur de production ~/.npmrc est généralement absent et HOME peut ne pas être défini : seul le .npmrc du projet est fiable. C'est la fonction à utiliser depuis du code serveur, readNpmrcToken restant réservée à la CLI.

Notes

Le token n'expire pas dans le temps. C'est un token opaque Verdaccio, pas un JWT. Il cesse de fonctionner seulement si le secret du serveur change, si le mot de passe de l'utilisateur est modifié, ou si le compte est révoqué. Un nouveau npm login n'invalide pas l'ancien token.

Aucun code runtime ne lit ce token. Il ne sert qu'à npm install, pour télécharger @lrvo/core et les @lrvo/module-*. En conséquence il doit être fourni au serveur avant le build, pas au démarrage de l'application.

npm login --registry=https://registry.lrvo.app/
npx lrvo-key
npm ci
npm run build

Sur cette page