Ir al contenido

Usar bun con Pier

El gestor de paquetes de Bun (bun add, bun install) habla el protocolo estándar del registro de npm y lee .npmrc — idéntico a npm. Los dos aspectos interesantes son:

  • Packument abreviado — bun envía Accept: application/vnd.npm.install-v1+json por defecto. Pier devuelve una carga JSON más ligera (sin README, sin marcas de tiempo históricas), lo que hace las instalaciones notablemente más ágiles en paquetes grandes.
  • Siempre envía el bearer. Igual que npm y pnpm, bun envía la autenticación en cada solicitud — sin necesidad del workaround de always-auth=true.
.npmrc
registry=https://YOUR-PIER-HOST/registry/npm/
//YOUR-PIER-HOST/registry/npm/:_authToken=pier_npm_…
always-auth=true

always-auth=true es inofensivo para bun. Mantenlo para que el mismo .npmrc también funcione con yarn 1 si alguna vez lo necesitas.

Ventana de terminal
bun install
bun add left-pad
bun add @your-org/internal-lib
bun add -d typescript # devDependency
Ventana de terminal
bun publish

Bun soporta bun publish desde la versión 1.1+. Usa el mismo formato de transmisión que cualquier CLI de npm (PUT estilo CouchDB con _attachments).

Bun no tiene su propio flujo de login por navegador. Usa npm login --auth-type=web contra Pier — bun lee el mismo .npmrc:

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

El packument abreviado elimina campos no necesarios para la resolución de instalación:

CampoCompletoAbreviado
name
dist-tags
versions[*]manifiesto completosolo campos de instalación
versions[*].dist.{tarball,integrity}
versions[*].readme
versions[*].time
time (mapa de historial)

Para paquetes populares (next, react, etc.) la forma abreviada es 5–10× más pequeña. Pier sirve ambas; la elección se determina por la cabecera Accept.

Versión de bunEstadoNotas
latest (1.x)Probado en la matriz de pier-tests contra la estable actual

Fija la versión mediante packageManager si quieres un comportamiento sincronizado:

{
"packageManager": "[email protected]"
}
  • error: not found: <pkg> — proxy upstream desactivado + paquete no publicado de forma privada. Activa el proxy.
  • error: Failed to authenticate — token ausente o revocado. Emite uno nuevo.
  • error: file not found en un paquete con scope — la codificación de URL para @scope/name podría estar corrompida por un proxy intermedio. Prueba la obtención en bruto: curl -H "Authorization: Bearer pier_npm_…" https://pier-host/registry/npm/@scope%2Fname — debería devolver el JSON del packument.