Skip to main content

Gestionar el registro de npm

Puede configurar npm para publicar paquetes en GitHub Packages y usar los paquetes almacenados en GitHub Packages como dependencias en un proyecto de npm.

Nota:

Este tipo de paquete podría no estar disponible para tu instancia, ya que los administradores del sitio pueden habilitar o inhabilitar cada tipo de paquete compatible. Para más información, consulta Configurar la compatibilidad del ecosistema de paquetes para tu empresa.

Límites para las versiónes de npm publicadas

Si publica más de 1000 versiones del paquete npm en GitHub Packages, es posible que vea que se producen problemas de rendimiento y tiempos de espera durante el uso.

En el futuro, para mejorar el rendimiento del servicio, no podrá publicar más de 1000 versiones de un paquete en GitHub. Cualquier versión que se publique antes de llegar a este límite aún será legible.

Si llega a este límite, considere borrar las versiones del paquete o ponerse en contacto con soporte t{ecnico para recibir ayuda. Cuando se aplique este límite, actualizaremos nuestra documentación con una forma de dar soluciones para él. Para más información, consulta Borrar y restablecer un paquete o Introducción a los paquetes de GitHub.

Autenticación en GitHub Packages

Nota:

GitHub Packages solo admite la autenticación mediante un personal access token (classic). Para más información, consulta Administración de tokens de acceso personal.

Necesitas un token de acceso para publicar, instalar y eliminar paquetes privados, internos y públicos.

Puedes utilizar un personal access token (classic) para autenticarte en el GitHub Packages o en la API de GitHub. Cuando creas un personal access token (classic), puedes asignar al token diferentes ámbitos en función de tus necesidades. Para más información sobre los ámbitos relacionados con paquetes para un personal access token (classic), consulta Acerca de los permisos para los Paquetes de GitHub.

Para autenticarte en un registro del GitHub Packages dentro de un flujo de trabajo de GitHub Actions, puedes utilizar:

  • GITHUB_TOKEN para publicar los paquetes asociados con el repositorio del flujo de trabajo.
  • Un personal access token (classic) con al menos alcance read:packages para instalar los paquetes asociados con otros repositorios privados (GITHUB_TOKEN puede utilizarse si el repositorio tiene acceso de lectura al paquete. Consulta Configurar la visibilidad y el control de accesos de un paquete).

Autenticación con personal access token

Debes utilizar un personal access token (classic) con los ámbitos adecuados para publicar e instalar paquetes en GitHub Packages. Para más información, consulta Introducción a los paquetes de GitHub.

Puede autenticarse en GitHub Packages con npm editando su archivo ~/.npmrc de usuario para incluir su personal access token (classic) o iniciando sesión en npm en la línea de comandos con su nombre de usuario y personal access token.

Para autenticarse añadiendo su personal access token (classic) al archivo ~/.npmrc, edite el archivo ~/.npmrc de su proyecto para incluir la siguiente línea, sustituyendo HOSTNAME por el nombre de host de tu instancia de GitHub Enterprise Server y TOKEN por su personal access token. Crea un nuevo archivo ~/.npmrc si no existe.

Si la instancia tiene habilitado el aislamiento de subdominio:

//npm.HOSTNAME//:_authToken=TOKEN

Si tu instancia tiene deshabilitado el aislamiento de subdominios:

//HOSTNAME/_registry/npm/:_authToken=TOKEN

Para autenticarse iniciando sesión en npm, use el npm login comando , reemplazando USERNAME por su GitHub nombre de usuario, TOKEN por personal access token (classic)su y PUBLIC-EMAIL-ADDRESS por su dirección de correo electrónico.

Si usas la versión 9 o una posterior de la CLI de npm e inicias sesión en un registro privado mediante la línea de comandos, o cierras la sesión en él, debes usar la opción --auth-type=legacy para leer los detalles de autenticación de mensajes en lugar de usar el flujo de inicio de sesión predeterminado mediante un explorador. Para obtener más información, vea npm-login.

Si GitHub Packages no es tu registro de paquetes predeterminado para usar npm y quieres usar el comando npm audit, te recomendamos que uses el indicador --scope con el espacio de nombres que aloja el paquete (la cuenta personal u organización que es propietaria del repositorio donde se aloja el paquete) cuando te autentiques en GitHub Packages.

Si la instancia tiene habilitado el aislamiento de subdominio:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.HOSTNAME/

> Username: USERNAME
> Password: TOKEN

Si tu instancia tiene deshabilitado el aislamiento de subdominios:

$ npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://HOSTNAME/_registry/npm/
> Username: USERNAME
> Password: TOKEN

Publicación de un paquete

Nota:

Los nombres y ámbitos de los paquetes solo deben usar letras minúsculas.

De forma predeterminada, el paquete se publica en el GitHub repositorio que especifique en el name campo del package.json archivo. Por ejemplo, publicaría un paquete denominado @my-org/test en el my-org/testGitHub repositorio. Puede publicar varios paquetes en el mismo GitHub repositorio mediante la inclusión de un repository campo en el package.json archivo. Para más información, consulta Publicación de varios paquetes en el mismo repositorio.

Puede configurar la asignación de ámbito del proyecto si usa un archivo .npmrc local en el proyecto o la opción publishConfig en package.json. GitHub Packages solo admite paquetes npm con ámbito. Los paquetes con ámbito tienen nombres con el formato @NAMESPACE/PACKAGE-NAME. Los paquetes con ámbito siempre comienzan con un símbolo @. Es posible que tenga que actualizar el nombre en package.json para usar el nombre con ámbito. Por ejemplo, si eres el usuario octocat y el paquete se llama test, asignarías el nombre del paquete con alcance de la siguiente manera: "name": "@octocat/test".

Después de que publiques un paquete, puedes verlo en GitHub. Para más información, consulta Visualizar paquetes.

Publicación de un paquete mediante un archivo .npmrc local

Puede usar un archivo .npmrc para configurar la asignación de ámbito del proyecto. En el archivo .npmrc, use la URL y el propietario de la cuenta de GitHub Packages para que GitHub Packages sepa adónde dirigir las solicitudes de paquetes. El uso de un .npmrc archivo impide que otros desarrolladores publiquen accidentalmente el paquete en npmjs.org en lugar de GitHub Packages.

  1. Autentícate en GitHub Packages. Para obtener más información, consulta Autenticación en GitHub Packages.
  2. En el mismo directorio que el archivo package.json, crea o edita un archivo .npmrc para incluir una línea que especifique la URL de GitHub Packages y el espacio de nombres donde se hospeda el paquete. Reemplaza NAMESPACE por el nombre de la cuenta de usuario u organización que posee el repositorio que contiene el proyecto.

Si se habilita el aislamiento de subdominios:

@NAMESPACE:registry=https://npm.HOSTNAME

Si se inhabilita el aislamiento de subdominios:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. Agregue el archivo .npmrc al repositorio donde GitHub Packages pueda encontrar el proyecto. Para más información, consulta Agregar un archivo a un repositorio.

  2. Compruebe el nombre del paquete en el archivo package.json del proyecto. El campo name debe contener el ámbito y el nombre del paquete. Por ejemplo, si su paquete se llama "test" y va a publicarlo en la organización "My-org" GitHub, el campo name de su package.json debe ser @my-org/test.

  3. Comprueba el campo repository en package.json del proyecto. El campo repository debe coincidir con la URL del repositorio GitHub. Por ejemplo, si la URL del repositorio es github.com/my-org/test, el campo del repositorio debe ser https://github.com/my-org/test.git.

  4. Publique el paquete:

    npm publish
    

Publicación de un paquete mediante publishConfig en el archivo package.json

Puede usar el elemento publishConfig en el archivo package.json para especificar el registro donde quiere publicar el paquete. Para más información, consulta publishConfig en la documentación de npm.

  1. Edite el archivo package.json del paquete e incluya una entrada publishConfig.

    Si la instancia tiene habilitado el aislamiento de subdominio:

    "publishConfig": {
      "registry": "https://npm. HOSTNAME/"
    },
    

    Si tu instancia tiene deshabilitado el aislamiento de subdominios:

    "publishConfig": {
      "registry": "https://HOSTNAME/_registry/npm/"
    },
    
  2. Comprueba el campo repository en package.json del proyecto. El campo repository debe coincidir con la URL del repositorio GitHub. Por ejemplo, si la URL del repositorio es github.com/my-org/test, el campo del repositorio debe ser https://github.com/my-org/test.git.

  3. Publique el paquete:

    npm publish
    

Publicar múltiples paquetes en el mismo repositorio

Para publicar varios paquetes al mismo repositorio, puede incluir la dirección URL del GitHub repositorio en el repository campo del package.json archivo para cada paquete. Para más información, consulta Creación de un archivo package.json y Creación de módulos de Node.js en la documentación de npm.

Para asegurarse de que la dirección URL del repositorio es correcta, reemplace por REPOSITORY el nombre del repositorio que contiene el paquete que desea publicar y OWNER por el nombre de la cuenta personal u organización en GitHub ese repositorio.

GitHub Packages coincidirá con el repositorio en función de la dirección URL, en lugar de en función del nombre del paquete.

"repository":"https://HOSTNAME/OWNER/REPOSITORY",

Instalación de un paquete

Puede instalar paquetes desde GitHub Packages agregando los paquetes como dependencias en el package.json archivo del proyecto. Para más información sobre el uso de package.json en el proyecto, consulta Trabajo con package.json en la documentación de npm.

Por defecto, puedes agregar paquetes de una organización. Para más información, consulta Instalación de paquetes de otras organizaciones.

También debe agregar el .npmrc archivo al proyecto para que todas las solicitudes para instalar paquetes vayan a través de GitHub Packages. Cuando enruta todas las solicitudes de paquetes a través de GitHub Packages, puede usar paquetes con y sin ámbito de npmjs.org. Para obtener más información, consulte npm-scope en la documentación de npm.

  1. Autentícate en GitHub Packages. Para obtener más información, consulta Autenticación en GitHub Packages.
  2. En el mismo directorio que el archivo package.json, crea o edita un archivo .npmrc para incluir una línea que especifique la URL de GitHub Packages y el espacio de nombres donde se hospeda el paquete. Reemplaza NAMESPACE por el nombre de la cuenta de usuario u organización que posee el repositorio que contiene el proyecto.

Si se habilita el aislamiento de subdominios:

@NAMESPACE:registry=https://npm.HOSTNAME

Si se inhabilita el aislamiento de subdominios:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
  1. Agregue el archivo .npmrc al repositorio donde GitHub Packages pueda encontrar el proyecto. Para más información, consulta Agregar un archivo a un repositorio.

  2. Configura package.json en tu proyecto para utilizar el paquete que estás instalando. Para agregar las dependencias del paquete al package.json archivo para GitHub Packages, especifique el nombre del paquete de ámbito completo, como @my-org/server. Para los paquetes de npmjs.com, especifique el nombre completo, como @babel/core o lodash. Reemplaza ORGANIZATION_NAME/PACKAGE_NAME con la dependencia del paquete.

    {
      "name": "@my-org/server",
      "version": "1.0.0",
      "description": "Server app that uses the ORGANIZATION_NAME/PACKAGE_NAME package",
      "main": "index.js",
      "author": "",
      "license": "MIT",
      "dependencies": {
        "ORGANIZATION_NAME/PACKAGE_NAME": "1.0.0"
      }
    }
    
  3. Instala el paquete.

    npm install
    

Instalar paquetes de otras organizaciones

De forma predeterminada, solo puede usar GitHub Packages paquetes de una organización. Si desea enrutar solicitudes de paquete a varias organizaciones y usuarios, puede agregar líneas adicionales al .npmrc archivo, reemplazando por HOSTNAME el nombre de host de tu instancia de GitHub Enterprise Server y NAMESPACE por el nombre de la cuenta personal u organización que posee el repositorio que contiene el proyecto.

Si la instancia tiene habilitado el aislamiento de subdominio:

@NAMESPACE:registry=https://npm.HOSTNAME
@NAMESPACE:registry=https://npm.HOSTNAME

Si tu instancia tiene deshabilitado el aislamiento de subdominios:

@NAMESPACE:registry=https://HOSTNAME/_registry/npm
@NAMESPACE:registry=https://HOSTNAME/_registry/npm

Uso del registro oficial de npm

GitHub Packages permite acceder al registro oficial de npm en registry.npmjs.com, si el GitHub Enterprise Server administrador ha habilitado esta característica. Para más información, consulta Conexión al registro oficial de npm.