Corepack es un script de Node.js con dependencia de tiempo de ejecución cero que actúa como un puente entre los proyectos de Node.js y los administradores de paquetes con los que deben usarse durante el desarrollo. En términos prácticos, Corepack te permite usar Yarn, npm y pnpm sin tener que instalarlos .
Corepack se distribuye de forma predeterminada con todas las versiones recientes de Node.js. Ejecute corepack enable
para instalar los binarios Yarn y pnpm necesarios en su ruta.
Primero desinstale sus binarios globales Yarn y pnpm (simplemente deje npm). En general, esto se haría ejecutando el siguiente comando:
npm uninstall -g Yarn pnpm# Eso debería ser suficiente, pero si instaló Yarn sin pasar por npm, podría# ser más tedioso; por ejemplo, es posible que también necesite ejecutar `brew uninstall Yarn`.
Luego instale Corepack:
instalación npm -g paquete central
Reconocemos la ironía y los gastos generales de usar npm para instalar Corepack, lo cual es al menos parte del motivo por el cual la opción preferida es usar la versión de Corepack que se distribuye junto con el propio Node.js.
Consulte CONTRIBUTING.md
.
Simplemente use sus administradores de paquetes como lo haría normalmente. Ejecute yarn install
en proyectos Yarn, pnpm install
en proyectos pnpm y npm
en proyectos npm. Corepack captará estas llamadas y, según la situación:
Si el proyecto local está configurado para el administrador de paquetes que estás usando , Corepack descargará y almacenará en caché la última versión compatible.
Si el proyecto local está configurado para un administrador de paquetes diferente , Corepack le solicitará que ejecute el comando nuevamente usando el administrador de paquetes correcto, evitando así la corrupción de los artefactos de instalación.
Si el proyecto local no está configurado para ningún administrador de paquetes , Corepack asumirá que usted sabe lo que está haciendo y utilizará cualquier versión del administrador de paquetes que se haya fijado como "versión buena conocida". Consulte la sección correspondiente para obtener más detalles.
Configure el administrador de su paquete con el campo packageManager
en package.json
:
{ "packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"}
Aquí, yarn
es el nombre del administrador de paquetes, especificado en la versión 3.2.3
, junto con el hash SHA-224 de esta versión para su validación. Se requiere packageManager@xyz
. El hash es opcional pero se recomienda encarecidamente como práctica de seguridad. Los valores permitidos para el administrador de paquetes son yarn
, npm
y pnpm
.
También puede proporcionar una URL a un archivo .js
(que se interpretará como un módulo CommonJS) o un archivo .tgz
(que se interpretará como un paquete y el campo "bin"
del package.json
se utilizará para determinar qué archivo usar en el archivo).
{ "packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"}
Cuando se ejecuta Corepack dentro de proyectos que no incluyen un administrador de paquetes compatible, se utilizará de forma predeterminada un conjunto de versiones buenas conocidas.
Si no hay una versión buena conocida para el administrador de paquetes solicitado, Corepack busca en el registro npm la última versión disponible y la almacena en caché para uso futuro.
Las versiones buenas conocidas se pueden actualizar en todo el sistema usando corepack install -g
. Cuando Corepack descarga una nueva versión de un administrador de paquetes determinado en la misma línea principal que la versión buena conocida, la actualiza automáticamente de forma predeterminada.
Los comandos de la utilidad se detallan en la siguiente sección.
Puede usar la red mientras crea la imagen de su contenedor, en cuyo caso simplemente ejecutará corepack pack
para asegurarse de que su imagen incluya la última versión válida conocida para el administrador de paquetes especificado.
O está publicando su proyecto en un sistema donde la red no está disponible, en cuyo caso generará de forma preventiva un archivo de administrador de paquetes desde su computadora local (usando corepack pack -o
) antes de almacenarlo en algún lugar al que su contenedor pueda acceder. (por ejemplo dentro de su repositorio). Después de eso, solo será cuestión de ejecutar corepack install -g --cache-only
para configurar el caché.
corepack [@] [... args]
Este metacomando ejecuta el administrador de paquetes especificado en la carpeta local. Puede usarlo para forzar la ejecución de una instalación con una versión determinada, lo que puede resultar útil al buscar regresiones.
Tenga en cuenta que esos comandos aún verifican si el proyecto local está configurado para el administrador de paquetes determinado (es decir, no podrá ejecutar corepack yarn install
en un proyecto donde el campo packageManager
haga referencia pnpm
).
corepack cache clean
Borra el directorio de caché local COREPACK_HOME
.
corepack cache clear
Borra el directorio de caché local COREPACK_HOME
.
corepack enable [... name]
Opción | Descripción |
---|---|
--install-directory | Agregue las cuñas a la ubicación especificada |
Este comando detectará dónde está instalado Corepack y creará shims junto a él para cada uno de los administradores de paquetes especificados (o todos ellos si el comando se llama sin parámetros). Tenga en cuenta que las correcciones de npm no se instalarán a menos que se soliciten explícitamente, ya que npm se distribuye actualmente con Node.js a través de otros medios.
Si el sistema de archivos donde se encuentra el binario corepack
es de solo lectura, este comando fallará. Una solución alternativa es agregar los archivos binarios como alias en su archivo de configuración de shell (por ejemplo, en ~/.bash_aliases
):
alias hilo="corepack hilo"alias hilopkg="corepack hilopkg"alias pnpm="corepack pnpm"alias pnpx="corepack pnpx"alias npm="corepack npm"alias npx="corepack npx"
En Windows PowerShell, puede agregar funciones usando la variable automática $PROFILE
:
echo "función hilo { corepack hilo `$args }" >> $PROFILEecho "función hilopkg { corepack hilopkg `$args }" >> $PROFILEecho "función pnpm { corepack pnpm `$args }" >> $PROFILEecho "función pnpx { corepack pnpx `$args }" >> $PROFILEecho "función npm { corepack npm `$args }" >> $PROFILEecho "función npx { corepack npx `$args }" >> $PROFILE
corepack disable [... name]
Opción | Descripción |
---|---|
--install-directory | Retire las cuñas a la ubicación especificada. |
Este comando detectará dónde está instalado Node.js y eliminará las correcciones desde allí.
corepack install
Descargue e instale el administrador de paquetes configurado en el proyecto local. Este comando no cambia la versión global utilizada cuando se ejecuta el administrador de paquetes desde fuera del proyecto (use el indicador `-g,--global` si desea hacer esto).
corepack install <-g,--global> [... name[@]]
Instale los administradores de paquetes seleccionados e instálelos en el sistema.
Los administradores de paquetes así instalados se configurarán como el nuevo valor predeterminado al llamar a sus respectivos archivos binarios fuera de los proyectos que definen el campo packageManager
.
corepack pack [... name[@]]
Opción | Descripción |
---|---|
--json | Imprima la carpeta de salida en lugar de los registros |
-o,--output | Ruta donde generar el archivo |
Descargue los administradores de paquetes seleccionados y guárdelos dentro de un tarball adecuado para usar con corepack install -g
.
corepack use ]>
Cuando se ejecuta, este comando recuperará la última versión que coincida con el descriptor proporcionado, la asignará al archivo package.json del proyecto y realizará una instalación automáticamente.
corepack up
Recupere la última versión disponible para la línea de versión principal actual del administrador de paquetes utilizado en el proyecto local y actualice el proyecto para usarlo.
A diferencia del corepack use
este comando no toma un nombre de administrador de paquetes ni un rango de versiones, ya que siempre seleccionará la última versión disponible de la misma línea principal. Si necesita actualizar a una nueva especialización, use una llamada explícita corepack use {name}@latest
(o simplemente corepack use {name}
).
COREPACK_DEFAULT_TO_LATEST
se puede establecer en 0
para indicarle a Corepack que no busque en el registro remoto la última versión del administrador de paquetes seleccionado y que no actualice la última versión válida conocida cuando descargue una nueva versión de la misma línea principal.
COREPACK_ENABLE_AUTO_PIN
se puede establecer en 0
para evitar que Corepack actualice el campo packageManager
cuando detecta que el paquete local no lo incluye. En general, recomendamos incluir siempre un campo packageManager
(que puede configurar fácilmente mediante corepack use [name]@[version]
), ya que garantiza que las instalaciones de su proyecto sean siempre deterministas.
COREPACK_ENABLE_DOWNLOAD_PROMPT
se puede configurar en 0
para evitar que Corepack muestre la URL cuando necesita descargar software, o se puede configurar en 1
para que se muestre la URL. De forma predeterminada, cuando se llama explícitamente a Corepack (por ejemplo, corepack pnpm …
), se establece en 0
; cuando se llama implícitamente a Corepack (por ejemplo, pnpm …
), se establece en 1
. Cuando la entrada estándar es un TTY y no se detecta ningún entorno CI, Corepack solicitará la entrada del usuario antes de iniciar la descarga.
COREPACK_ENABLE_UNSAFE_CUSTOM_URLS
se puede establecer en 1
para permitir el uso de URL personalizadas para cargar un administrador de paquetes conocido por Corepack ( yarn
, npm
y pnpm
).
COREPACK_ENABLE_NETWORK
se puede configurar en 0
para evitar que Corepack acceda a la red (en cuyo caso usted será responsable de hidratar las versiones del administrador de paquetes que serán necesarias para los proyectos que ejecutará, usando corepack install -g --cache-only
).
COREPACK_ENABLE_STRICT
se puede establecer en 0
para evitar que Corepack arroje un error si el administrador de paquetes no corresponde al definido para el proyecto actual. Esto significa que si un usuario está usando el administrador de paquetes especificado en el proyecto actual, usará la versión especificada por el campo packageManager
del proyecto. Pero si el usuario utiliza otro administrador de paquetes diferente al especificado para el proyecto actual, utilizará la versión del administrador de paquetes para todo el sistema.
COREPACK_ENABLE_PROJECT_SPEC
se puede establecer en 0
para evitar que Corepack verifique si el administrador de paquetes corresponde al definido para el proyecto actual. Esto significa que siempre utilizará el administrador de paquetes de todo el sistema independientemente de lo que se especifique en el campo packageManager
del proyecto.
COREPACK_HOME
se puede configurar para definir dónde debe instalar Corepack los administradores de paquetes. De forma predeterminada, está configurado en %LOCALAPPDATA%nodecorepack
en Windows y en $HOME/.cache/node/corepack
en cualquier otro lugar.
COREPACK_ROOT
no tiene ningún impacto funcional en el propio Corepack; Corepack lo configura automáticamente en su entorno cuando lo envía a los administradores de paquetes subyacentes, para que puedan detectar su presencia (útil para comandos como yarn init
).
COREPACK_NPM_REGISTRY
establece la URL base del registro utilizada al recuperar administradores de paquetes de npm. El valor predeterminado es https://registry.npmjs.org
COREPACK_NPM_TOKEN
establece un encabezado de autorización de token de portador cuando se conecta a un registro de tipo npm.
COREPACK_NPM_USERNAME
y COREPACK_NPM_PASSWORD
para establecer un encabezado de autorización básica al conectarse a un registro de tipo npm. Tenga en cuenta que ambas variables de entorno son obligatorias y están en texto sin formato. Si desea enviar una contraseña vacía, establezca explícitamente COREPACK_NPM_PASSWORD
en una cadena vacía.
HTTP_PROXY
, HTTPS_PROXY
y NO_PROXY
se admiten a través de node-proxy-agent
.
COREPACK_INTEGRITY_KEYS
se puede configurar en una cadena vacía o 0
para indicarle a Corepack que omita las comprobaciones de integridad, o en una cadena JSON que contenga claves personalizadas.
Existe una amplia variedad de problemas de red que pueden ocurrir al ejecutar comandos corepack
. Cosas para comprobar:
Asegúrese de que su conexión de red esté activa.
Asegúrese de que su DNS pueda resolver el host de su solicitud; intente usar curl [URL]
(ipv4) y curl -6 [URL]
(ipv6) desde su shell.
Verifique la configuración de su proxy (consulte Variables de entorno).
Consulte CONTRIBUTING.md
.
Consulte LICENSE.md
.