Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Artifacts permite a los desarrolladores administrar paquetes de varios orígenes, incluidos registros públicos como npmjs.com y fuentes privadas. Para autenticarse con Azure Artifacts, debe configurar el archivo de configuración de npmrc . Este archivo almacena las direcciones URL de fuente y las credenciales usadas por npm, y permite personalizar el comportamiento del cliente, como configurar servidores proxy, definir ubicaciones de paquetes predeterminadas o configurar el acceso a fuentes privadas. El archivo npmrc se encuentra normalmente en el directorio principal del usuario, pero también se puede crear en el nivel de proyecto para invalidar la configuración predeterminada.
Prerrequisitos
Conexión a una fuente
Azure Artifacts recomienda usar dos archivos de configuración .npmrc independientes. Uno de ellos se debe almacenar localmente para guardar tus credenciales, mientras que el otro se debe agregar al directorio de tu proyecto junto con el package.json para definir la URL de tu fuente. Este enfoque le permite compartir la configuración de nivel de proyecto sin exponer información confidencial.
Para configurar el archivo de credenciales, cree o actualice el archivo .npmrc e incluya todas las credenciales del Registro necesarias. Esto permite al cliente npm acceder fácilmente a sus credenciales para la autenticación.
Los pasos siguientes le guían a través de la configuración del archivo de configuración de nivel de proyecto. Seleccione la pestaña correspondiente al entorno de desarrollo:
Nota
vsts-npm-auth no se admite en Azure DevOps Server.
Inicie sesión en la organización de Azure DevOps y vaya al proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione Conectar a Feed y, a continuación, seleccione npm en el panel de navegación izquierdo.
Agregue un archivo .npmrc al proyecto, en el mismo directorio que el package.json y pegue el fragmento de código proporcionado de la sección Configuración del proyecto en el archivo.
Ejecute el siguiente comando para obtener un token de Azure Artifacts agregado al archivo .npmrc de nivel de usuario. No es necesario ejecutar esto cada vez: npm devolverá un error 401 No autorizado cuando sea el momento de actualizar el token.
vsts-npm-auth -config .npmrc
Inicie sesión en la organización de Azure DevOps y vaya al proyecto.
Seleccione Artefactos y, a continuación, seleccione tu feed en el menú desplegable.
Seleccione Conectar a Feed y, a continuación, seleccione npm en el panel de navegación izquierdo.
Agregue un archivo .npmrc al directorio del proyecto. Debe ser el mismo directorio donde se encuentra el archivo package.json .
Pegue el fragmento de código proporcionado en la sección Configuración del proyecto en el archivo .npmrc . El archivo debe tener un aspecto similar al siguiente:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
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=[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
Generar un token de acceso personal con ámbitos de lectura y escritura de empaquetado.
Desde una ventana del símbolo del sistema, ejecute el siguiente comando. Cuando se le solicite, pegue el token de acceso personal (PAT) y presione Entrar. El script devolverá una versión codificada en Base64 de su PAT, copie ese valor para usarlo en el paso siguiente.
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(); })"
Nota
A partir de julio de 2024, los tokens de acceso personal (PAT) de Azure DevOps tienen 82 caracteres. Algunas herramientas pueden insertar saltos de línea automáticos al codificar tokens en Base64. Para evitar esto, use la -w0 marca con el comando base64 para asegurarse de que la salida permanece en una sola línea.
En este tutorial, usamos el método Buffer de Node, que genera una cadena Base64 de una sola línea de forma predeterminada.
Si usa Linux o macOS, puede ejecutar el siguiente comando en el terminal para convertir el token de acceso personal (PAT) en una cadena codificada en Base64. Copie el valor resultante que se usará en el paso siguiente.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64 -w0
Reemplace los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo npmrc de nivel de usuario por el token de acceso personal codificado en Base64 que generó en el paso anterior.
Inicie sesión en la colección de Azure DevOps y vaya al proyecto.
Seleccione Artefactos, seleccione su fuente en el menú desplegable y, a continuación, seleccione Conectar a la fuente.
Seleccione npm de la izquierda y siga los pasos descritos en la sección Configuración del proyecto para configurar el archivo npmrc y autenticarse con la fuente.
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 Feed y, a continuación, seleccione npm en el panel de navegación izquierdo.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y pegue el fragmento de código proporcionado en la sección Configuración del proyecto en el archivo npmrc . El archivo debe tener un aspecto similar al siguiente:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
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
Generar un token de acceso personal con ámbitos de lectura y escritura de empaquetado.
Desde una ventana del símbolo del sistema, ejecute el siguiente comando. Cuando se le solicite, pegue el token de acceso personal y presione Entrar. El script devolverá una versión codificada en Base64 de su PAT, copie ese valor para usarlo en el paso siguiente.
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(); })"
Nota
A partir de julio de 2024, los tokens de acceso personal (PAT) de Azure DevOps tienen 82 caracteres. Algunas herramientas pueden insertar saltos de línea automáticos al codificar tokens en Base64. Para evitar esto, use la -w0 marca con el comando base64 para asegurarse de que la salida permanece en una sola línea.
En este tutorial, usamos el método Buffer de Node, que genera una cadena Base64 de una sola línea de forma predeterminada.
Reemplace los marcadores de posición [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo .npmrc de nivel de usuario por el token de acceso personal codificado en Base64 que generó en el paso anterior.
Contenido relacionado