From 57162e0121af3662dfc9ed09443d294fe1299074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alvaro=20Amor=C3=B3s?= <39102625+ElMaxter99@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:37:50 +0100 Subject: [PATCH 1/2] Add GitHub Action to publish package on tags --- .github/workflows/publish.yml | 34 ++++++++++++++++++++++++++++++++++ README.md | 10 ++++++++++ 2 files changed, 44 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..2eb11b6 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,34 @@ +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: npm ci + + - name: Run tests + run: npm test + + - name: Publish package + run: npm publish --access public diff --git a/README.md b/README.md index 9ce77ea..b3b3b0c 100644 --- a/README.md +++ b/README.md @@ -135,3 +135,13 @@ 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`. + +Asegurate de configurar el secreto `NPM_TOKEN` en el repositorio con un token de acceso a npm que tenga permisos de publicación. From 1749c93b10d00100daca88e8fd71d0a5702bfcf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alvaro=20Amor=C3=B3s?= <39102625+ElMaxter99@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:48:35 +0100 Subject: [PATCH 2/2] Handle npm install fallback in publish workflow --- .github/workflows/publish.yml | 7 ++++++- README.md | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2eb11b6..a03ae1d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,7 +25,12 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Install dependencies - run: npm ci + run: | + if [ -f package-lock.json ]; then + npm ci + else + npm install + fi - name: Run tests run: npm test diff --git a/README.md b/README.md index b3b3b0c..b6a886e 100644 --- a/README.md +++ b/README.md @@ -144,4 +144,6 @@ El empaquetado y la publicación ahora se realizan a través de un flujo de GitH 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.