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 à coller

Puis 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: false

access: $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

Sur cette page