Conectar el proyecto de npm a las fuentes de Azure Artifacts
Artículo
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Azure Artifacts permite a los desarrolladores publicar e instalar varios tipos de paquetes desde fuentes y registros públicos, como npmjs.com. Para autenticarse con Azure Artifacts, es necesario configurar el archivo de configuración de npm.
Este archivo contiene direcciones URL de fuente y credenciales usadas por npm, ofreciendo opciones para personalizar el comportamiento del cliente de npm, como configurar servidores proxy, definir ubicaciones de paquetes predeterminadas o configurar fuentes de paquetes 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. Al modificar el archivo .npmrc, los usuarios pueden personalizar su experiencia de npm para satisfacer sus requisitos específicos.
Requisitos previos
Una organización de Azure DevOps y un proyecto. Cree una organización o un proyecto si aún no lo ha hecho.
Una fuente de Azure Artifacts. Cree una fuente si todavía no tiene una.
Para conocer los procedimientos recomendados, se recomienda usar dos archivos de configuración independientes. La primera se usa para autenticarse con Azure Artifacts, mientras que la segunda se almacena localmente y contiene las credenciales.
Para configurar el segundo archivo, basta con colocarlo en el directorio principal en la máquina de desarrollo e incluir todas las credenciales del Registro. De este modo, el cliente npm puede acceder fácilmente a sus credenciales para la autenticación, lo que le permite compartir el archivo de configuración al tiempo que mantiene las credenciales seguras.
Los pasos siguientes le guiarán a través de la configuración del primer archivo de configuración:
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 Conectar para alimentar.
Seleccione npm en el panel de navegación izquierdo.
Si es la primera vez que usa Azure Artifacts con npm, seleccione Obtener las herramientas y siga las instrucciones para instalar los requisitos previos.
Siga las instrucciones de Configuración del proyecto para conectarse a la fuente.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y copie el fragmento de código siguiente en él.
Copie el siguiente fragmento de código en el archivo npmrc de nivel de usuario:
Fuente con ámbito de la 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Codifique el token de acceso personal recién generado de la siguiente manera:
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite:
Seleccione Artefactos y, a continuación, seleccione Conectar para alimentar.
Seleccione npm en el panel de navegación izquierdo.
Si es la primera vez que usa Azure Artifacts con npm, seleccione Obtener las herramientas y siga las instrucciones para instalar los requisitos previos.
Siga las instrucciones de Configuración del proyecto para configurar el archivo de configuración.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y copie el fragmento de código siguiente en él.
Copie el siguiente fragmento de código 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Codifique el token de acceso personal recién generado de la siguiente manera:
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite:
Seleccione Artefactos y, a continuación, seleccione Conectar para alimentar.
Seleccione npm en el panel de navegación izquierdo.
Si es la primera vez que usa Azure Artifacts con npm, seleccione Obtener las herramientas y siga las instrucciones para instalar los requisitos previos.
Siga las instrucciones de Configuración del proyecto para configurar el archivo de configuración.
Agregue un archivo .npmrc en el directorio del proyecto, en el mismo directorio que el archivo package.json y copie el fragmento de código siguiente en él.
Copie el siguiente fragmento de código 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
Genere un token de acceso personal con ámbitos de lectura y escritura empaquetados.
Codifique el token de acceso personal recién generado de la siguiente manera:
Ejecute el siguiente comando en una ventana del símbolo del sistema y pegue el token de acceso personal cuando se le solicite:
Reemplace ambos valores [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] en el archivo .npmrc de usuario por el token de acceso personal del paso 3.
Seleccione la colección y vaya al proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar para alimentar.
Aparecerá una ventana nueva. En el panel de navegación izquierdo, seleccione npm.
Siga las instrucciones para configurar el proyecto y los archivos .npmrc de usuario .
Sugerencia
El uso de varios registros en archivos .npmrc se admite con ámbitos y orígenes ascendentes.
Autenticación de canalización
Para autenticarse con la canalización, Azure Artifacts recomienda usar la tarea de autenticación de npm.
Al usar ejecutores de tareas como gulp o Grunt, es importante incluir la tarea de autenticación de npm al principio de la canalización. Esta acción garantiza que las credenciales se insertan en el archivo .npmrc del proyecto y se conservan en toda la ejecución de la canalización, lo que permite que los pasos posteriores accedan a las credenciales en el archivo de configuración.
Vaya al proyecto, seleccione Canalizaciones y, a continuación, seleccione la definición de canalización.
Seleccione Editar para modificar la canalización.
Seleccione + esta opción para agregar una nueva tarea a la canalización.
Vaya al proyecto, seleccione Pipelines Builds (Compilaciones>de canalizaciones) y, a continuación, seleccione la definición de compilación.
Seleccione Editar para modificar la canalización de compilación.
Seleccione + esta opción para agregar una nueva tarea a la canalización de compilación.
Busque la tarea Autenticación de npm y, a continuación, seleccione Agregar.
Seleccione el archivo .npmrc y, a continuación, seleccione Guardar y cola cuando haya terminado.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Nota:
Para que la canalización acceda a la fuente, asegúrese de que el rol de servicio de compilación esté establecido en Lector de fuente y ascendente (colaborador) en la configuración de la fuente.
Nota:
Si su organización usa un firewall o un servidor proxy, asegúrese de permitir las direcciones URL de dominio adecuadas. Consulte Direcciones IP permitidas y direcciones URL de dominio para obtener más información.
Solución de problemas
vsts-npm-auth no se reconoce
Si se produce el siguiente error durante la ejecución del proyecto:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
A continuación, es probable que la carpeta de módulos npm no se haya agregado a la ruta de acceso. Para solucionarlo, vuelva a ejecutar la configuración de Node.js y asegúrese de seleccionar la Add to PATH opción .
Como alternativa, puede agregar la carpeta de módulos npm a la ruta de acceso modificando la variable PATH a %APPDATA%\npm en el símbolo del sistema o $env:APPDATA\npm en PowerShell.
No se puede autenticar
Si tiene un error E401: code E401 npm ERR! Unable to authenticate. Ejecute el vsts-npm-auth comando con la marca -F para volver a autenticarse.
vsts-npm-auth -config .npmrc -F
Restablecer vsts-npm-auth
Siga estos pasos para restablecer las credenciales de vsts-npm-auth:
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea: https://aka.ms/ContentUserFeedback.