Ir al contenido

Usar pnpm con Pier

pnpm lee su configuración de registro desde .npmrc — el mismo archivo que usa npm. La semántica de autenticación coincide con la de npm (bearer en cada solicitud), así que, a diferencia de yarn 1, no necesitas always-auth=true para que pnpm funcione.

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

always-auth=true es opcional para pnpm — es inofensivo y recomendable si también usas yarn 1 en el mismo proyecto.

Ventana de terminal
pnpm install
pnpm add left-pad
pnpm add @your-org/internal-lib
pnpm add -D typescript # devDependency
Ventana de terminal
pnpm publish
pnpm publish --tag beta
pnpm publish --no-git-checks # omite la comprobación de árbol limpio en CI

Para un workspace de pnpm, coloca .npmrc en la raíz del workspace — cada paquete lo hereda. No hace falta duplicarlo por paquete.

my-monorepo/
├── .npmrc ← aquí
├── package.json
├── pnpm-workspace.yaml
└── packages/
├── app/package.json
└── lib/package.json

Si un paquete concreto necesita un registro distinto, coloca un .npmrc junto a su package.json — pnpm usa el más cercano subiendo por el árbol.

Cuando listas node_modules/ después de una instalación de pnpm, verás node_modules/.pnpm/ que contiene el almacén real direccionado por contenido. Las dependencias de nivel superior son symlinks hacia él. Esto es intencionado y no afecta a Pier — los paquetes se siguen solicitando a través de la misma API HTTP.

Versión de pnpmEstadoNotas
9Funciona sin configuración adicional
10Funciona sin configuración adicional

Fija la versión mediante packageManager en package.json para que corepack use la correcta:

{
"packageManager": "[email protected]"
}
  • ERR_PNPM_FETCH_401 — token revocado o ausente. Emite uno nuevo en Packages → Manage tokens.
  • ERR_PNPM_FETCH_404 — proxy upstream desactivado + paquete no publicado de forma privada. Actívalo en Packages → Upstream proxy.
  • ERR_PNPM_INTEGRITY_CHECK_FAILED — el tarball almacenado en Pier quedó desincronizado respecto a su sha512. Es raro; normalmente se debe a ediciones manuales del FS. Solución: rm /opt/pier/data/registry/<pkg>/<file>.tgz y reinstala (Pier lo volverá a obtener con la integridad correcta).