Servicios de Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Azure Artifacts utiliza el archivo de configuración .npmrc para autenticar a los clientes de npm con fuentes. La configuración recomendada mantiene la configuración del canal y las credenciales en dos archivos .npmrc independientes: un archivo de nivel de proyecto (registrado en el control de versiones junto con package.json) que almacena la URL del canal, y un archivo de nivel de usuario (que nunca se registra en el control de versiones) que almacena sus credenciales.
Prerrequisitos
|
Producto |
Requisitos |
|
Azure DevOps |
- Una organización de Azure DevOps . - Un proyecto de Azure DevOps . - Una fuente de Azure Artifacts. - Descargar Node.js y npm. |
Conexión a una fuente
Seleccione la pestaña que coincida con el sistema operativo y siga los pasos para configurar los archivos .npmrc :
Nota
vsts-npm-auth no se admite en Azure DevOps Server.
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione Conectar a la fuente y, a continuación, seleccione npm en el panel de navegación izquierdo.
Si no ha instalado vsts-npm-auth, ejecute el siguiente comando:
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
Agregue un archivo .npmrc al project en el mismo directorio que el package.jsony, a continuación, pegue el fragmento de código de la sección de configuración de Project en el archivo.
Ejecute el siguiente comando para agregar un token al archivo .npmrc de nivel de usuario. npm devuelve un error 401 No autorizado cuando expira el token; vuelva a ejecutar este comando para actualizarlo.
vsts-npm-auth -config .npmrc
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione Conectar a la fuente y, a continuación, seleccione npm en el panel de navegación izquierdo.
Agregue un archivo .npmrc al project en el mismo directorio que el package.jsony, a continuación, pegue el fragmento de código de la sección de configuración de Project en el archivo. El archivo debe tener un aspecto similar al siguiente:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
Credenciales de instalación
Copie el siguiente fragmento de código y péguelo en el archivo npmrc de nivel de usuario:
Feed con ámbito de organización:
; 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=[ENTER_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
Fuente con ámbito de proyecto:
; 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
Genera un token de acceso personal con el ámbito Empaquetado>Lectura y escritura.
Codifique su PAT en Base64 utilizando uno de los métodos siguientes:
Node.js (todas las plataformas): ejecute el siguiente comando, escriba el PAT cuando se le solicite y copie el valor resultante.
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(); })"
macOS o Linux: ejecute el siguiente comando y copie la salida.
echo -n "YOUR_PERSONAL_ACCESS_TOKEN" | base64
Sustituye los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en tu archivo .npmrc de nivel de usuario por el valor codificado.
Inicie sesión en la colección de Azure DevOps y vaya al proyecto.
Seleccione Artefactos, seleccione la fuente en el menú desplegable y, a continuación, seleccione Conectar a la fuente.
Seleccione npm, y luego siga los pasos de la sección Configuración del proyecto para configurar el archivo .npmrc y autenticarse en el feed.
Inicie sesión en la colección de Azure DevOps y vaya al proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione Conectar a la fuente y, a continuación, seleccione npm en el panel de navegación izquierdo.
Agregue un archivo .npmrc al project en el mismo directorio que el package.jsony, a continuación, pegue el fragmento de código de la sección de configuración de Project en el archivo. El archivo debe tener un aspecto similar al siguiente:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
Credenciales de instalación
Copie el siguiente fragmento de código y péguelo en el archivo .npmrc de nivel de usuario:
Fuente con ámbito de colección:
; 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
Fuente con ámbito de proyecto:
; 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
Genera un token de acceso personal con el ámbito Empaquetado>Lectura y escritura.
Ejecute el siguiente comando, escriba el PAT cuando se le solicite y, a continuación, copie el valor codificado en Base64 resultante.
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(); })"
Sustituye los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en tu archivo .npmrc de nivel de usuario por el valor codificado.
Contenido relacionado