diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..a03ae1d --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,39 @@ +name: Publish package + +on: + push: + tags: + - 'v*' + workflow_dispatch: + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: | + if [ -f package-lock.json ]; then + npm ci + else + npm install + fi + + - name: Run tests + run: npm test + + - name: Publish package + run: npm publish --access public diff --git a/README.md b/README.md index 9ce77ea..b6a886e 100644 --- a/README.md +++ b/README.md @@ -135,3 +135,15 @@ node example.js ``` El script carga la configuración `external-checks.json`, simula resolvers externos y muestra los errores detectados. + +## Publicar una nueva versión + +El empaquetado y la publicación ahora se realizan a través de un flujo de GitHub Actions. Para liberar una nueva versión: + +1. Actualizá la versión en `package.json` usando `npm version `. +2. Subí el commit y el tag (`git push origin main --follow-tags`). +3. El workflow [`publish.yml`](.github/workflows/publish.yml) se activará al detectar el tag (`v*`), ejecutará los tests y publicará el paquete con `npm publish` usando el secreto `NPM_TOKEN`. + +> **Nota:** el workflow instala dependencias con `npm ci` cuando existe `package-lock.json` y utiliza `npm install` como respaldo, por lo que no es obligatorio versionar el lockfile. + +Asegurate de configurar el secreto `NPM_TOKEN` en el repositorio con un token de acceso a npm que tenga permisos de publicación.