La publicación en npm está automatizada con Changesets y GitHub Actions. En el flujo normal nadie publica desde su máquina; hacerlo a mano queda sólo para la recuperación descrita más abajo.
-
Trabaja en una rama y abre un PR.
-
Antes de pedir revisión, declara el cambio de versión:
yarn changeset
Elige patch, minor o major y escribe el resumen en español (ese texto
acaba tal cual en el CHANGELOG.md). Se crea un archivo en .changeset/;
commitéalo junto con tu código.
- Mergea el PR a
main. - El workflow
Releasecorre CI y, si hay changesets pendientes, abre o actualiza un PR llamadochore: version packages. Ese PR sube la versión enpackage.jsony escribe elCHANGELOG.md. No lo edites a mano. - Cuando quieras liberar, mergea el PR
chore: version packages. Ese merge dispara la publicación:npm publishcon provenance, tag de git y GitHub Release.
Varios PRs mergeados antes del paso 5 se acumulan en el mismo PR de versión y salen en una sola release.
Un PR sin archivo en .changeset/ no publica nada y no abre PR de versión.
Es el caso esperado para docs, tests o cambios de CI.
- Secret
NPM_TOKEN: token de npm con permiso de escritura sobre@insoutt/datafast-react(granular o automation; un token clásico con 2FA obligatorio falla conEOTP). - Ajuste del repositorio: Settings → Actions → General → Allow GitHub Actions to create and approve pull requests debe estar activado, si no el PR de versión no se puede crear.
- Provenance requiere que el repositorio siga siendo público y que el job
releasemantengaid-token: write; si el repositorio pasa a privado, la publicación falla.
-
El PR
chore: version packageslo creaGITHUB_TOKEN, y GitHub no dispara workflows sobre PRs creados por ese token. Por eso ese PR aparece sin checks: la validación real ocurre al mergearlo, porqueReleaseejecuta CI antes de publicar. -
.changeset/config.jsontienecommit: false:yarn changesetya no commitea solo, lo haces tú. -
No mergees otros PRs mientras el merge de
chore: version packagesestá publicando. GitHub guarda una sola ejecución pendiente por grupo de concurrencia, así que un tercer merge expulsa de la cola a la que iba a publicar y esa publicación nunca llega a correr. Cómo recuperar depende de si el merge que la expulsó traía changeset:- Sin changeset: relanza
Releasea mano desde la pestaña Actions (workflow_dispatchsobremain). Esa ejecución no ve changesets pendientes, va directa a publicar y recupera la versión saltada. - Con changeset: relanzar no arregla nada. La ejecución manual ve los
changesets pendientes, vuelve a la rama de versionado y abre otro PR
chore: version packagesque sube la versión otra vez. La versión saltada conserva su sección en elCHANGELOG.mdpero se queda sin publicar en npm, sin tag y sin Release. Dos salidas: publicarla a mano desde el commit de su merge (git checkout <sha> && yarn release, que publica sin provenance; después crea el tag y la Release desde la UI), o darla por perdida y mergear el nuevo PR de versión, que publica el siguiente número.
Un merge queue en
maincierra esta ventana del todo. - Sin changeset: relanza
| Síntoma | Causa | Arreglo |
|---|---|---|
EOTP al publicar |
Token clásico con 2FA | Genera un token granular y gh secret set NPM_TOKEN |
ENEEDAUTH |
Falta registry-url o el secret |
Revisa .github/workflows/release.yml |
| No aparece el PR de versión | Falta el permiso de crear PRs | Activa el ajuste de Actions descrito arriba |
check-format falla tras versionar |
CHANGELOG sin formatear | yarn version-packages ya corre Prettier; ejecútalo de nuevo |
| publicado en npm pero sin tag ni GitHub Release | El re-run no lo repara: changeset publish omite la versión ya publicada |
Crear el tag a mano (git tag vX.Y.Z <sha> -m vX.Y.Z && git push origin vX.Y.Z) y publicar la Release desde la UI |