Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Artifacts permet aux développeurs de gérer leurs packages à partir de différentes sources, y compris les registres publics tels que npmjs.com et les flux privés. Pour vous authentifier auprès d’Azure Artifacts, vous devez configurer votre fichier de configuration npm. Ce fichier contient des URL de flux et des informations d’identification utilisées par npm, offrant des options pour personnaliser le comportement de votre client npm, telles que la configuration de proxys, la définition des emplacements de package par défaut ou la configuration des flux de package privés. Le fichier npmrc se trouve généralement dans le répertoire de base de l’utilisateur, mais peut également être créé au niveau du projet pour remplacer les paramètres par défaut.
Conditions préalables
Se connecter au flux
Azure Artifacts recommande d’utiliser deux fichiers de configuration distincts. La première est dédiée à l’authentification auprès d’Azure Artifacts, tandis que la seconde doit être conservée localement pour stocker vos informations d’identification. Cette approche vous permet de partager votre fichier de configuration tout en conservant vos informations d’identification sécurisées.
Pour configurer le deuxième fichier, placez-le dans votre répertoire de base sur votre ordinateur de développement et incluez toutes vos informations d’identification de Registre. Cela permet au client npm d’accéder facilement à vos informations d’identification pour l’authentification.
Les étapes suivantes vous guident tout au long de la configuration du premier fichier de configuration. Sélectionnez l’onglet correspondant à votre environnement de développement :
Remarque
vsts-npm-auth
n’est pas pris en charge dans Azure DevOps Server.
Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.
Sélectionnez Artefacts, puis sélectionnez Se connecter au flux.
Sélectionnez npm dans la barre latérale gauche. S’il s’agit de la première utilisation d’Azure Artifacts avec npm, vérifiez que vous avez installé les prérequis.
Suivez les instructions de la section Configuration du projet pour vous connecter à votre flux.
Ajoutez un fichier .npmrc dans le répertoire de votre projet, dans le même répertoire que votre fichier package.json, puis collez l’extrait de code suivant dans celui-ci.
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Configurer les informations d’identification
Copiez l’extrait de code suivant et collez-le dans votre fichier npmrc de niveau utilisateur :
Flux à l'échelle de l'organisation :
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flux à l'échelle du projet :
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Générez un jeton d’accès personnel avec les étendues Gestion des packages, lecture et écriture.
Exécutez la commande suivante dans une fenêtre d’invite de commandes, puis collez votre jeton d’accès personnel lorsque vous y êtes invité. Une fois l’opération terminée, copiez la valeur encodée base 64 générée.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Si vous êtes sur Linux/Mac, vous pouvez également utiliser la commande suivante pour convertir votre jeton d’accès personnel en Base 64. Copiez la valeur encodée en Base64 résultante.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Remplacez les espaces réservés [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] dans votre fichier .npmrc utilisateur par le jeton d’accès personnel encodé obtenu à l’étape précédente.
Connectez-vous à votre collection Azure DevOps, puis accédez à votre projet.
Sélectionnez Artefacts, puis sélectionnez Se connecter au flux.
Sélectionnez npm dans la barre latérale gauche, puis suivez les instructions de la section configuration de Project pour configurer votre fichier de configuration.
Ajoutez un fichier .npmrc dans le répertoire de votre projet, dans le même répertoire que votre fichier package.json, puis collez l’extrait de code suivant dans celui-ci.
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Configurer les informations d’identification
Copiez l’extrait de code suivant et collez-le dans votre fichier .npmrc de niveau utilisateur :
Flux à portée de collection :
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flux à l'échelle du projet :
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Générez un jeton d’accès personnel avec les étendues Gestion des packages, lecture et écriture.
Exécutez la commande suivante dans une fenêtre d’invite de commandes, puis collez votre jeton d’accès personnel lorsque vous y êtes invité. Une fois l’opération terminée, copiez la valeur encodée base 64 générée.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Remplacez les espaces réservés [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] dans votre fichier .npmrc utilisateur par le jeton d’accès personnel encodé obtenu à l’étape précédente.
Connectez-vous à votre collection Azure DevOps, puis accédez à votre projet.
Sélectionnez Artefacts, puis sélectionnez Se connecter au flux.
Sélectionnez npm dans le menu de gauche, puis suivez les instructions de Configuration du projet pour configurer votre fichier de configuration.
Ajoutez un fichier .npmrc dans le répertoire de votre projet, dans le même répertoire que votre fichier package.json, puis collez l’extrait de code suivant dans celui-ci :
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Remarque
Pour Debian, Ubuntu et d’autres distributions de communauté ou d’entreprise telles que Fedora ou Redhat, vérifiez que vous avez installé les prérequis à partir du référentiel de distributions NodeSource.
Configurer les informations d’identification
Copiez l’extrait de code suivant et collez-le dans votre fichier .npmrc de niveau utilisateur :
Flux à portée de collection :
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Flux à l'échelle du projet :
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Générez un jeton d’accès personnel avec les étendues Gestion des packages, lecture et écriture.
Exécutez la commande suivante dans une fenêtre d’invite de commandes, puis collez votre jeton d’accès personnel lorsque vous y êtes invité. Une fois l’opération terminée, copiez la valeur encodée base 64 générée.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Remplacez les espaces réservés [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] dans votre fichier .npmrc utilisateur par le jeton d’accès personnel encodé obtenu à l’étape précédente.
Conseil
L'utilisation de plusieurs registres dans les fichiers .npmrc est prise en charge grâce aux étendues et aux sources amont.
Dépanner
vsts-npm-auth n’est pas reconnu
Cette erreur indique que le dossier des modules npm n’a pas été ajouté à votre chemin d’accès. Réexécutez la configuration Node.js et veillez à sélectionner l’option Add to PATH
. Vous pouvez également ajouter le dossier des modules npm à votre chemin en modifiant la variable PATH pour %APPDATA%\npm
dans l’invite de commandes ou $env:APPDATA\npm
dans PowerShell.
Impossible de s’authentifier
Réinitialiser vsts-npm-auth
Procédez comme suit pour réinitialiser vos informations d’identification vsts-npm-auth :
Désinstallez vsts-npm-auth :
npm uninstall -g vsts-npm-auth
Effacez votre cache npm :
npm cache clean --force
Supprimez votre fichier .npmrc.
Réinstallez vsts-npm-auth :
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
Impossible de publier
Si vous rencontrez une erreur 403, cela peut indiquer un conflit de noms. Dans Azure Artifacts, les packages sont immuables, ce qui signifie qu’une fois que vous publiez un package sur votre flux, son numéro de version est réservé définitivement. Même si vous le supprimez, vous ne pouvez pas publier un nouveau package avec le même numéro de version. Pour résoudre ce problème, mettez à jour la version du package dans votre fichier package.json, puis réessayez.
Contenu connexe