Registre Verdaccio
Administration du registre npm registry.fraza.ca, utilisateurs, packages, versions, tags et droits d'accès.
Commandes de gestion du registre Verdaccio de Fraza, à https://registry.fraza.ca/. Il sert deux scopes. Les paquets de Fraza Libre sont publiés sous @fraza/* et se lisent sans compte. Les modules de Fraza Pro sont publiés sous @fraza-pro/* et leur lecture demande un compte. La publication demande un compte sur les deux scopes.
Pour publier un package, voir Publication. Pour synchroniser le token dans un projet, voir fraza-key.
Token
npm login dépose un token dans ~/.npmrc. Il sert à installer les @fraza-pro/* et à publier. C'est un token opaque Verdaccio, pas un JWT : il n'expire pas dans le temps. 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.
npm login --registry=https://registry.fraza.ca/ # obtenir ou renouveler
npx fraza-key # synchroniser dans le projet
npx fraza-key status # vérifier, token masquéLe .npmrc d'un projet qui a des modules Pro porte le token en clair. Il est suivi par git par défaut, ce qui suppose un dépôt privé : voir Secrets et git.
Utilisateurs
Créer
npm adduser --registry=https://registry.fraza.ca/Modifier un mot de passe
Verdaccio ne propose pas de commande native. Modifier directement le fichier htpasswd sur le serveur :
htpasswd -n USERNAME # génère le hash à collerPuis remplacer la ligne correspondante dans le htpasswd de Verdaccio.
Supprimer
Supprimer la ligne de l'utilisateur dans le htpasswd sur le serveur, chemin par défaut /etc/verdaccio/htpasswd.
Packages
# Lister les packages publiés
npm search --registry=https://registry.fraza.ca/ "@fraza"
npm search --registry=https://registry.fraza.ca/ "@fraza-pro"
# Supprimer une version précise
npm unpublish @fraza/[email protected] --registry=https://registry.fraza.ca/
# Déprécier une version
npm deprecate @fraza/[email protected] "Raison" --registry=https://registry.fraza.ca/Préférer toujours deprecate à unpublish : la dépréciation avertit les consommateurs sans casser une installation existante.
# Supprimer toutes les versions d'un package
npm unpublish @fraza/core --force --registry=https://registry.fraza.ca/--force supprime définitivement l'ensemble du package. À n'utiliser que si aucun projet consommateur n'en dépend.
Tags
npm dist-tag ls @fraza/core --registry=https://registry.fraza.ca/
npm dist-tag add @fraza/[email protected] latest --registry=https://registry.fraza.ca/
npm dist-tag rm @fraza/core beta --registry=https://registry.fraza.ca/Droits d'accès
Les droits sont dans la section packages du config.yaml sur le serveur. La règle visée, un bloc par scope :
packages:
'@fraza/*':
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: false
'@fraza-pro/*':
access: $authenticated
publish: $authenticated
unpublish: $authenticated
proxy: falseaccess: $all ouvre la lecture de @fraza/* sans connexion. @fraza-pro/* reste en $authenticated : c'est ce qui réserve les modules Pro aux comptes du registre.
Verdaccio applique le premier motif qui correspond. Tant que les anciens noms des modules Pro (@fraza/module-billing, @fraza/module-booking, @fraza/module-drive, versions 0.1.3 et antérieures) restent sur le registre, chacun garde son propre bloc en $authenticated, placé au-dessus de '@fraza/*'. Sans lui, $all les rendrait téléchargeables sans compte. Ces blocs se retirent une fois les paquets supprimés avec npm unpublish --force.
proxy: false empêche le registre de retomber sur npm public pour ces scopes, ce qui évite qu'un nom de package interne soit résolu depuis l'extérieur.
Redémarrer après toute modification :
systemctl restart verdaccio
# ou, en Docker :
docker restart verdaccio