Bump del SDK y regeneración del package-lock en Linux
Cuándo aplica
Sección titulada «Cuándo aplica»Tras bumpear @ticketplushq/tables-sdk en el package.json de cualquiera de los 3
consumidores del SDK:
| Repo | Convención de rango |
|---|---|
tables-web | versión exacta (ej. "1.5.1") |
tables-app | caret (ej. "^1.5.1") |
bites-kiosk | caret (ej. "^1.5.1") |
Por qué en Linux y no en macOS
Sección titulada «Por qué en Linux y no en macOS»- CI corre
npm ci, que aborta sipackage-lock.jsonno concuerda exactamente conpackage.json. El lock es el artefacto que CI consume; debe generarse en el mismo SO/arquitectura que CI (Linux). - Un
npm installen macOS puede resolver dependencias opcionales / binarios por-plataforma distintos y/o hashes de integridad distintos → produce un lock que CI (Linux) rechaza, rompiendo el build aunque “localmente funcione”. - El SDK se publica a GitHub Packages (registry privado). El token de
gh auth tokenNO tiene scoperead:packages; el token válido vive en~/.npmrcy hay que montarlo en el container para que npm pueda resolver el paquete.
-
Bumpear la dep en
package.jsonrespetando la convención de rango del repo (web exacto, app/kiosk caret). -
Regenerar solo el lock, en Linux, con auth a GH Packages:
Ventana de terminal cd repos/<tables-web|tables-app|bites-kiosk>docker run --rm \-v "$PWD":/app -w /app \-v "$HOME/.npmrc":/root/.npmrc:ro \node:20.18.3 \sh -lc 'npm install --package-lock-only --ignore-scripts --no-audit --no-fund'
node:20.18.3— versión de.nvmrcde los repos (alinear con la imagen de CI si cambia).--package-lock-only— actualiza únicamentepackage-lock.json, sin escribirnode_modules(rápido, sin contaminar el working-tree).-v "$HOME/.npmrc":/root/.npmrc:ro— auth de GH Packages (read-only).
Verificación
Sección titulada «Verificación»# El SDK debe quedar en la versión nueva y resuelto desde GH Packages:grep -A2 '"node_modules/@ticketplushq/tables-sdk"' package-lock.json | grep -E "version|resolved"# version: "1.5.1"# resolved: "https://npm.pkg.github.com/download/@ticketplushq/tables-sdk/1.5.1/..."
git diff --stat package.json package-lock.json # el diff del lock debe ser MINIMOEl diff esperado del lock es solo la entrada de @ticketplushq/tables-sdk (version +
resolved + integrity). Si aparecen muchas otras líneas, revisar que la imagen de Node y el
~/.npmrc sean los correctos.
package.json y package-lock.json van juntos en el mismo commit. Ejemplo:
chore(deps): bump @ticketplushq/tables-sdk a 1.5.1
Lock regenerado con npm install en Docker Linux (node:20.18.3) — GH Packages.Relación con el release del SDK
Sección titulada «Relación con el release del SDK»Este runbook es el paso downstream (en los consumidores). El upstream — publicar
la versión nueva del SDK — se hace en tables-sdk con bump + tag v* sobre master
(dispara release.yml → GH Packages). Recién cuando esa versión está publicada, los
consumidores pueden resolverla con el comando de arriba.
Troubleshooting
Sección titulada «Troubleshooting»npm error code E401/Unable to authenticate: falta el~/.npmrccon el token de GH Packages, o el token expiró. No sirvegh auth token(sinread:packages).404 Not Foundpara la versión nueva: el SDK todavía no se publicó a GH Packages (esperar a que terminerelease.ymldel tagv<version>).- El lock cambia muchísimo: se corrió en macOS o con una imagen de Node distinta a la
de CI. Descartar y rehacer con
node:20.18.3.