fraza-key

Reprendre le token du registre depuis ~/.npmrc dans le .npmrc du projet, pour les modules Pro.

npm login dépose un token dans ~/.npmrc. Le .npmrc du projet, lui, doit porter ce token directement. fraza-key fait le pont entre les deux.

Le token n'est nécessaire qu'aux modules Pro, publiés sous le scope @fraza-pro. @fraza/core et les modules gratuits s'installent sans lui.

npm login --registry=https://registry.fraza.ca/   # obtenir ou renouveler un token
npx fraza-key                                       # le reprendre dans .npmrc

Commandes

CommandeEffet
npx fraza-keyÉquivaut à sync.
npx fraza-key syncReprend le token de ~/.npmrc et l'écrit dans le .npmrc du projet.
npx fraza-key statusAffiche l'état du token, masqué.
npx fraza-key helpAffiche l'aide.

sync crée le .npmrc avec les scopes @fraza et @fraza-pro et le token s'il n'existe pas. Sinon il ajoute ou remplace la ligne //registry.fraza.ca/:_authToken=, ajoute les lignes @fraza:registry= et @fraza-pro:registry= qui manqueraient, et préserve le reste du fichier.

Sans token dans ~/.npmrc, sync échoue et indique la commande npm login : la commande n'existe que pour reprendre ce token.

Quand la lancer

  • Après un npm login, sur un projet qui ajoute son premier module Pro ou qui a déjà les siens.
  • Sur un serveur de build d'un projet qui a des modules Pro, avant npm ci.

Dans un projet déjà installé, npx fraza-key suffit après npm login. Sur un serveur, avant npm ci :

printf '@fraza:registry=https://registry.fraza.ca/\n@fraza-pro:registry=https://registry.fraza.ca/\n' > .npmrc
npm login --registry=https://registry.fraza.ca/
npx --yes --package=@fraza/core fraza-key
npm ci
npm run build

Sur un clone neuf, node_modules n'existe pas encore : --package=@fraza/core dit à npx où trouver fraza-key, et les lignes de scope écrites d'abord le font chercher sur le registre Fraza. Un npx fraza-key nu irait chercher un paquet de ce nom sur npm public.

Une autre voie est possible sur un serveur : déposer directement un .npmrc contenant les deux lignes de scope et la ligne _authToken. Voir Déploiement.

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.

Aucun code runtime n'a besoin de ce token. Il ne sert qu'à télécharger les @fraza-pro/module-* pendant l'installation. Le fournir au démarrage de l'application ne sert donc à rien : il doit être là avant le build.

Le .npmrc du projet porte le secret en clair. Il est suivi par git par défaut, ce qui suppose un dépôt privé. Voir Secrets et git pour le sortir du dépôt.

L'implémentation est décrite dans Registre npm.

Sur cette page