Ir al contenido

Usar yarn 1.x con Pier

Yarn classic — yarn 1.22 — lee su configuración de registro desde .npmrc igual que npm. Hay una peculiaridad crítica:

always-auth=true es obligatorio para yarn 1. Sin él, yarn 1 omite el token bearer en las solicitudes GET, y cada instalación falla con 401 Unauthorized. npm/pnpm/bun envían el bearer por defecto, así que esto es específico de yarn 1.

.npmrc
registry=https://YOUR-PIER-HOST/registry/npm/
//YOUR-PIER-HOST/registry/npm/:_authToken=pier_npm_…
always-auth=true

Yarn 1 también lee .yarnrc para algunos flags, pero el registro y la autenticación provienen de .npmrc.

Ventana de terminal
yarn install
yarn add left-pad
yarn add @your-org/internal-lib
Ventana de terminal
yarn publish

Yarn 1 solicita el incremento de versión de forma interactiva. Pasa --new-version 1.2.0 para omitir el prompt en CI.

Yarn 1 no tiene su propio flujo de login — usa npm login contra Pier y el token aterriza en .npmrc (que yarn 1 lee).

Ventana de terminal
npm login --auth-type=web --registry=https://YOUR-PIER-HOST/registry/npm/

Yarn 1 tiene un comportamiento codificado de auth.optional = true para las solicitudes GET (que incluyen la obtención de packuments y la descarga de tarballs). Cuando se establece always-auth=true, yarn 1 promueve la autenticación a obligatoria en cada solicitud, incluidos los GET.

Pier exige autenticación en cada ruta autenticada (incluidas las lecturas de paquetes privados). Sin always-auth=true, yarn 1 no envía ningún bearer → Pier devuelve 401 → yarn falla.

Este ajuste es inofensivo para cualquier otro cliente, así que es seguro mantenerlo activado en todo momento.

Yarn 1.22.22 tiene una peculiaridad en el handshake TLS en Node 20 que produce un confuso stack trace de Request.emit al conectar con un upstream HTTPS. Usa Node 22+ (LTS 24 ideal) si trabajas con yarn 1.

Ventana de terminal
nvm install 24
nvm use 24
yarn --version # → 1.22.22
yarn install # works
Versión de yarnEstadoNotas
1.22.xalways-auth=true obligatorio; usa Node 22+
2.x / 3.x / 4.xConfiguración distinta — consulta la guía de yarn berry
  • Request "https://…/registry/npm/foo" finished with status code 401 — falta always-auth=true.
  • stack trace de Request.emit (events.js:223:5) — bug TLS de Node 20 en yarn 1.22. Actualiza Node a 22+ o 24 LTS.
  • error An unexpected error occurred: "404 Not Found" — el proxy upstream está desactivado y el paquete no se ha publicado de forma privada. Activa el proxy o publica de forma privada.