Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Publicar paquetes Node.js

Puedes publicar paquetes Node.js en un registro como parte de tu flujo de trabajo de integración continua (CI).

GitHub Actions se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, y GitHub One. GitHub Actions no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Para obtener más información, consulta la sección "Productos de GitHub".

En este artículo

Introducción

Esta guía te muestra cómo crear un flujo de trabajo que publique paquetes Node.js en el GitHub Packages y registros npm después de que se aprueben las pruebas de integración continua (CI). Con un solo flujo de trabajo, puedes publicar paquetes en un solo registro o varios registros.

Prerrequisitos

Recomendamos que tengas un conocimiento básico de las opciones de configuración de flujo de trabajo y de cómo crear un archivo de flujo de trabajo. Para obtener más información, consulta "Configurar un flujo de trabajo".

Para obtener más información acerca de la creación de un flujo de trabajo de CI para tu proyecto Node.js, consulta "Usar Node.js con las GitHub Actions".

También puede ser útil tener un entendimiento básico de lo siguiente:

Acerca de la configuración del paquete

Los campos name y version en el archivo package.json crean un identificador único que los registros usan para vincular tu paquete a un registro. Puedes agregar un resumen para la página de descripción del paquete al incluir un campo description en el archivo package.json. Para obtener más información, consulta "Crear un archivo package.json y Crear módulos Node.js"en la documentación de npm.

Cuando existe un archivo .npmrc local y tiene un valor especificado de registry, el comando npm publish usa el registro configurado en el archivo .npmrc. Puedes utilizar la acción setup-node para crear un archivo local de tipo .npmrc en el ejecutor que configura el registro y alcance predeterminados. La acción setup-node también acepta un token de autenticación como entrada, el cual se utiliza para acceder a los registros privados o paquetes de nodo publicados. Para obtener más información, consulta la sección setup-node.

Puedes especificar la versión de Node.js instalada en el ejecutor utilizando la acción setup-node.

Si agregas pasos en tu flujo de trabajo para configurar los campos publishConfig en tu archivo package.json, no es necesario que especifiques la URL del registro utilizando la acción setup-node, pero estarás limitado a publicar el paquete en un solo registro. Para obtener más información, consulta "publishConfig" en la documentación de npm.

Publicar paquetes en el registro npm

Cada vez que crees un lanzamiento nuevo, puedes activar un flujo de trabajo para publicar tu paquete. El flujo de trabajo del siguiente ejemplo se ejecuta cuando el evento release se desencadena con el tipo created. El flujo de trabajo publica el paquete en el registro npm si se superan las pruebas de CI.

Para realizar operaciones autenticadas en el registro npm de tu flujo de trabajo, deberás almacenar tu token de autenticación npm como un secreto en los parámetros de tu repositorio. Por ejemplo, crea un secreto llamado NPM_TOKEN. Para más información, consulta "Crear y usar secretos cifrados".

Por defecto, npm usa el campo name del archivo package.json para determinar el registro npm. Al publicar en un espacio de nombres global, solo necesitas incluir el nombre del paquete. Por ejemplo, publicarías un paquete llamado npm-hello-world-test en https://www.npmjs.com/package/npm-hello-world-test.

Si estás publicando un paquete que incluye un prefijo de ámbito, incluye el ámbito en el nombre de tu archivo package.json. Por ejemplo, si el prefijo del ámbito npm es octocat y el nombre del paquete es hello-world, el name en tu archivo package.json debe ser @octocat/hello-world. Si tu paquete npm usa un prefijo de ámbito y el paquete es público, debes usar la opción npm publish --access public. Esta es una opción que npm requiere para evitar que alguien publique un paquete privado involuntariamente.

Este ejemplo almacena el secreto NPM_TOKEN en la variable de entorno NODE_AUTH_TOKEN. Cuando la acción setup-node crea un archivo .npmrc, hace referencia al token de la variable de entorno NODE_AUTH_TOKEN.

name: Node.js Package
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    # Configura el archivo .npmrc para publicar en npm
    - uses: actions/setup-node@v1
      with:
        node-version: '12.x'
        registry-url: 'https://registry.npmjs.org'
    - run: npm install
    - run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

En el ejemplo anterior, la acción setup-node crea un archivo .npmrc en el ejecutor con el siguiente contenido:

//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
registry=https://registry.npmjs.org/
always-auth=true

Sube paquetes al GitHub Packages

Cada vez que crees un lanzamiento nuevo, puedes desencadenar un flujo de trabajo para publicar tu paquete. El flujo de trabajo del siguiente ejemplo se ejecuta cada vez que se produce el evento release con tipo created. El flujo de trabajo publica el paquete en el GitHub Packages si se superan las pruebas de CI.

Por defecto, GitHub Packages publica un paquete en el repositorio GitHub que especifiques en el campo name del archivo package.json. Por ejemplo, si publicas un paquete denominado @my-org/test en el repositorio de my-org/test GitHub. Para obtener más información, consulta npm-Scope en la documentación de npm.

Para realizar operaciones autenticadas en el registro GitHub Packages de tu flujo de trabajo, puedes utilizar el GITHUB_TOKEN. El GITHUB_TOKEN existe en tu repositorio por defecto y tiene permisos de lectura y escritura para paquetes en el repositorio donde se ejecuta el flujo de trabajo. Para más información, consulta "Crear y usar secretos cifrados."

Este ejemplo almacena el secreto GITHUB_TOKEN en la variable de entorno NODE_AUTH_TOKEN. Cuando la acción setup-node crea un archivo .npmrc, hace referencia al token de la variable de entorno NODE_AUTH_TOKEN.

name: Node.js Package
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    # Setup .npmrc file to publish to GitHub Packages
    - uses: actions/setup-node@v1
      with:
        node-version: '12.x'
        registry-url: 'https://npm.pkg.github.com'
        # Defaults to the user or organization that owns the workflow file
        scope: '@octocat'
    - run: npm install
    - run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

La acción setup-node crea un archivo .npmrc en el ejecutor. Cuando utilizas la entrada scope para la acción setup-node, el archivo .npmrc incluye el prefijo de ámbito. Por defecto, la acción setup-node establece el ámbito en el archivo .npmrc para la cuenta que contiene ese archivo de flujo de trabajo.

//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
@octocat:registry=https://npm.pkg.github.com
always-auth=true

Publicar paquetes mediante yarn

Si usas el gestor de paquetes Yarn, puedes instalar y publicar paquetes mediante Yarn.

name: Node.js Package
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    # Setup .npmrc file to publish to npm
    - uses: actions/setup-node@v1
      with:
        node-version: '12.x'
        registry-url: 'https://registry.npmjs.org'
        # Defaults to the user or organization that owns the workflow file
        scope: '@octocat' 
    - run: yarn
    - run: yarn publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Publicar paquetes en npm y GitHub Packages

Nota: Si necesitas publicar en los registros que tienen diferentes prefijos de ámbito, deberás modificar el archivo package.json en el ejecutor para cambiar el prefijo de ámbito. Por ejemplo, si publicas un paquete en el ámbito @mona para npm y @octocat para GitHub Packages, puedes reemplazar el ámbito @mona por @octocat en el archivo package.json del ejecutor después de publicar en npm y antes de publicar en GitHub Packages.

Puedes publicar tus paquetes tanto en el registro npm como en GitHub Packages mediante la acción setup-node para cada registro.

Si publicas un paquete en ambos registros, tendrás que asegurarte de que tu prefijo de ámbito en npm coincida con tu nombre de usuario u organización de GitHub. Para publicar paquetes en un registro público con un prefijo de ámbito, puedes utilizar el comando npm publish --access public. Para obtener más información, consulta npm-scope y "Crear y publicar paquetes públicos con ámbitos" en la documentación de npm.

Asegúrate de que tu archivo package.json incluya el ámbito de tu repositorio de GitHub y el registro de npm. Por ejemplo, si planeas publicar un paquete en el repositorio octocat/npm-hello-world-test en GitHub y https://www.npmjs. om/package/@octocat/npm-hello-world-test, el nombre en tu archivo package.json debería ser "name": "@octocat/npm-hello-world-test".

Para realizar operaciones autenticadas en el registro GitHub Packages en tu flujo de trabajo, puedes usar el GITHUB_TOKEN. El GITHUB_TOKEN existe en tu repositorio por defecto y tiene permisos de lectura y escritura para los paquetes del repositorio donde se ejecuta el flujo de trabajo. Para más información, consulta "Crear y usar secretos cifrados".

Cuando utilizas la entrada scope para la acción setup-node, la acción crea un archivo .npmrc que incluye el prefijo de ámbito. Por defecto, la acción setup-node establece el ámbito en el archivo .npmrc para el usuario u organización que posee el archivo de flujo de trabajo.

Este flujo de trabajo llama dos veces a la acción setup-node. Cada vez que se ejecuta la acción setup-node, sobrescribe el archivo .npmrc. El archivo .npmrc hace referencia al token que te permite realizar operaciones autenticadas en el registro del paquete desde la variable de entorno NODE_AUTH_TOKEN. El flujo de trabajo establece la variable de entorno NODE_AUTH_TOKEN cada vez que se ejecuta el comando npm publish, primero con un token para publicar en el (NPM_TOKEN) de npm y luego con un token para publicar en el GitHub Packages (GITHUB_TOKEN).

name: Node.js Package
on:
  release:
    types: [created]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    # Setup .npmrc file to publish to npm
    - uses: actions/setup-node@v1
      with:
        node-version: '10.x'
        registry-url: 'https://registry.npmjs.org'
    - run: npm install
    # Publish to npm
    - run: npm publish --access public
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
    # Setup .npmrc file to publish to GitHub Packages
    - uses: actions/setup-node@v1
      with:
        registry-url: 'https://npm.pkg.github.com'
        # Defaults to the user or organization that owns the workflow file
        scope: '@octocat'
    # Publish to GitHub Packages
    - run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos