Skip to content

Corepack

Añadido en: v16.9.0, v14.19.0

[Estable: 1 - Experimental]

Estable: 1 Estabilidad: 1 - Experimental

Corepack es una herramienta experimental para ayudar a gestionar las versiones de tus gestores de paquetes. Expone proxies binarios para cada gestor de paquetes soportado que, cuando se llama, identificará cualquier gestor de paquetes configurado para el proyecto actual, lo descargará si es necesario y, finalmente, lo ejecutará.

A pesar de que Corepack se distribuye con las instalaciones predeterminadas de Node.js, los gestores de paquetes administrados por Corepack no forman parte de la distribución de Node.js y:

  • En el primer uso, Corepack descarga la última versión de la red.
  • Cualquier actualización requerida (relacionada con vulnerabilidades de seguridad o de otro tipo) está fuera del alcance del proyecto Node.js. Si es necesario, los usuarios finales deben averiguar cómo actualizar por sí mismos.

Esta función simplifica dos flujos de trabajo principales:

  • Facilita la incorporación de nuevos colaboradores, ya que ya no tendrán que seguir los procesos de instalación específicos del sistema solo para tener el gestor de paquetes que desees.
  • Permite asegurar que todos en tu equipo usarán exactamente la versión del gestor de paquetes que pretendes, sin que tengan que sincronizarla manualmente cada vez que necesites realizar una actualización.

Flujos de trabajo

Habilitando la función

Debido a su estado experimental, Corepack actualmente necesita ser habilitado explícitamente para tener algún efecto. Para hacerlo, ejecuta corepack enable, lo cual configurará los enlaces simbólicos en tu entorno junto al binario node (y sobrescribirá los enlaces simbólicos existentes si es necesario).

A partir de este punto, cualquier llamada a los binarios compatibles funcionará sin configuración adicional. Si experimentas algún problema, ejecuta corepack disable para eliminar los proxies de tu sistema (y considera abrir un problema en el repositorio de Corepack para hacérnoslo saber).

Configurando un paquete

Los proxies de Corepack encontrarán el archivo package.json más cercano en tu jerarquía de directorios actual para extraer su propiedad "packageManager".

Si el valor corresponde a un gestor de paquetes compatible, Corepack se asegurará de que todas las llamadas a los binarios relevantes se ejecuten con la versión solicitada, descargándola bajo demanda si es necesario, y abortando si no se puede recuperar correctamente.

Puedes usar corepack use para pedirle a Corepack que actualice tu package.json local para usar el gestor de paquetes de tu elección:

bash
corepack use  # establece la última versión 7.x en el package.json
corepack use yarn@* # establece la última versión en el package.json

Actualización de las versiones globales

Cuando se ejecuta fuera de un proyecto existente (por ejemplo, al ejecutar yarn init), Corepack utilizará de forma predeterminada versiones predefinidas que corresponden aproximadamente a las últimas versiones estables de cada herramienta. Esas versiones se pueden anular ejecutando el comando corepack install junto con la versión del administrador de paquetes que desea establecer:

bash
corepack install --global

Alternativamente, se puede usar una etiqueta o un rango:

bash
corepack install --global pnpm@*
corepack install --global yarn@stable

Flujo de trabajo sin conexión

Muchos entornos de producción no tienen acceso a la red. Dado que Corepack normalmente descarga las versiones del administrador de paquetes directamente de sus registros, puede entrar en conflicto con dichos entornos. Para evitar que esto suceda, llame al comando corepack pack mientras aún tenga acceso a la red (normalmente al mismo tiempo que prepara su imagen de despliegue). Esto asegurará que los administradores de paquetes necesarios estén disponibles incluso sin acceso a la red.

El comando pack tiene varias banderas. Consulte la documentación detallada de Corepack para obtener más información.

Administradores de paquetes compatibles

Los siguientes binarios se proporcionan a través de Corepack:

Administrador de paquetesNombres de binarios
Yarnyarn , yarnpkg
pnpmpnpm , pnpx

Preguntas frecuentes

¿Cómo interactúa Corepack con npm?

Si bien Corepack podría admitir npm como cualquier otro administrador de paquetes, sus simulaciones no están habilitadas de forma predeterminada. Esto tiene algunas consecuencias:

  • Siempre es posible ejecutar un comando npm dentro de un proyecto configurado para usarse con otro administrador de paquetes, ya que Corepack no puede interceptarlo.
  • Si bien npm es una opción válida en la propiedad "packageManager", la falta de simulación hará que se utilice el npm global.

Ejecutar npm install -g yarn no funciona

npm evita la anulación accidental de los binarios de Corepack al realizar una instalación global. Para evitar este problema, considere una de las siguientes opciones:

  • No ejecute este comando; Corepack proporcionará los binarios del administrador de paquetes de todos modos y se asegurará de que las versiones solicitadas siempre estén disponibles, por lo que no es necesario instalar los administradores de paquetes explícitamente.
  • Agregue la marca --force a npm install; esto le indicará a npm que está bien sobrescribir los binarios, pero eliminará los de Corepack en el proceso. (Ejecute corepack enable para agregarlos nuevamente).