Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Los ámbitos de Npm sirven como medio para clasificar los paquetes relacionados en grupos. Estos ámbitos permiten crear paquetes con nombres idénticos a los creados por distintos usuarios sin encontrar conflictos. Mediante el uso de ámbitos, tiene la capacidad de separar paquetes públicos y privados agregando el prefijo de ámbito @scopeName y configurando el archivo .npmrc para usar exclusivamente una fuente con ese ámbito determinado.
Azure Artifacts proporciona la posibilidad de publicar y descargar paquetes definidos y no definidos desde orígenes o registros públicos. Los ámbitos de Npm son especialmente valiosos cuando se trabaja con servidores autohospedados en las instalaciones que carecen de acceso a internet, ya que la configuración de fuentes upstream en estos escenarios no es factible. En resumen, al usar ámbitos:
- No tenemos que preocuparnos por las colisiones de nombres.
- No es necesario cambiar el registro de npm para instalar o publicar nuestros paquetes.
- Cada organización o usuario de npm tiene su propio ámbito, y solo el propietario o los miembros del ámbito pueden publicar paquetes en su ámbito.
Configuración del proyecto
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto.
Seleccione Artefactos y, a continuación, seleccione Conectar a la fuente.
Seleccione npm y, a continuación, seleccione Otro.
Agregue un
.npmrcarchivo en el mismo directorio que el package.jsony pegue el siguiente fragmento de código en el archivo.Feed con ámbito de organización:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME/_packaging/<FEED_NAME>/npm/registry/ always-auth=trueFuente con ámbito de proyecto:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
Configuración de credenciales
Copie el siguiente fragmento de código en el archivo de nivel
.npmrcde usuario (ejemplo: C:\Users\FabrikamUser.npmrc). Asegúrese de no pegarlo en el archivo .npmrc dentro del repositorio de origen.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 tokenFuente 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 los ámbitos de empaquetado> y lectura y escritura.
Ejecute el comando siguiente para codificar el token de acceso personal recién generado. Cuando se le solicite, pegue el token de acceso personal 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(); })"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
-w0marca 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.Abra el
.npmrcarchivo y reemplace el marcador de posición[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]por el token de acceso personal codificado que acaba de crear.
Configuración del ámbito
En el archivo .npmrc, reemplace registry=<YOUR_SOURCE_URL> con @ScopeName:registry=<YOUR_SOURCE_URL>.
Asegúrese de incluir tanto el ámbito como los nombres de paquete en el archivo package.json como se indica a continuación: { "name": "@ScopeName/PackageName" }. Consulte los ejemplos siguientes:
Feed con ámbito de organización:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }Fuente con ámbito de proyecto:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }Ejemplo:
@local:registry=https://pkgs.dev.azure.com/FabrikamOrg/NpmDemo/_packaging/FabrikamFeed/npm/registry/ always-auth=true{ "name": "@demo/js-e2e-express-server", "version": "2.0.0", "description": "JavaScript server written with Express.js", "main": "index.js", "directories": { "doc": "docs", "test": "test" }
Publicación de paquetes con ámbito
Abra una ventana de comandos, navegue al directorio de su proyecto y ejecute el siguiente comando para publicar su paquete delimitado. En nuestro ejemplo, dentro de la vista @local, aparece nuestro paquete.
npm publish
Fuentes ascendentes frente a ámbitos
Los orígenes ascendentes ofrecen la mayor flexibilidad para usar una combinación de paquetes delimitados y no delimitados en tu repositorio, así como paquetes delimitados y no delimitados de registros públicos, como npmjs.com.
Sin embargo, los ámbitos imponen una restricción de nomenclatura en los paquetes: cada nombre de paquete debe comenzar con @<scope>. Si desea publicar sus paquetes privados en registros públicos, debe hacerlo con los alcances intactos. Si eliminas los ámbitos de los paquetes al desplegar tus paquetes, deberás actualizar todas las referencias en tu archivo package.json. Teniendo esto en cuenta, los ámbitos pueden servir como una alternativa viable a los orígenes ascendentes.