Por Anónimo (no verificado) , 29 Abril 2026

Lo que lograrás

Configurarás bump automatizado de versiones y generación de changelog dirigida por Conventional Commits.

El mecanismo

El tooling lee mensajes de commit siguiendo el formato Conventional Commits y decide qué tipo de release cortar.

Paso 1: adoptar Conventional Commits

git commit -m "feat(checkout): add Apple Pay support"
git commit -m "fix(auth): handle expired refresh tokens"
git commit -m "chore(deps): bump axios to 1.7.0"
git commit -m "feat!: drop Node 16 support

BREAKING CHANGE: minimum Node version is now 18."

Paso 2: forzar el formato

npm install --save-dev @commitlint/cli @commitlint/config-conventional husky

# commitlint.config.js
module.exports = { extends: ['@commitlint/config-conventional'] };

# .husky/commit-msg
#!/usr/bin/env sh
. "$(dirname "$0")/_/husky.sh"
npx --no -- commitlint --edit $1

Paso 3: instalar tooling de release

# .github/workflows/release-please.yml
name: release-please
on:
  push:
    branches: [main]
permissions:
  contents: write
  pull-requests: write
jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          release-type: node
          package-name: my-app

Paso 4: cómo funciona release-please

  1. Lee commits desde el último tag de release.
  2. Categoriza por tipo y decide la próxima versión.
  3. Actualiza CHANGELOG.md y la versión en package.json.
  4. Abre un "release PR".

Paso 5: disparar el workflow de publish

# .github/workflows/publish.yml
name: publish
on:
  push:
    tags: ['v*.*.*']
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          registry-url: 'https://registry.npmjs.org'
      - run: npm ci
      - run: npm run build
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

Paso 6: alternativa - changesets

npm install --save-dev @changesets/cli
npx changeset init

Paso 7: alternativa - semantic-release

npm install --save-dev semantic-release
# .releaserc.json
{
  "branches": ["main"],
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/changelog",
    "@semantic-release/npm",
    "@semantic-release/github",
    "@semantic-release/git"
  ]
}

Paso 8: pre-releases

git checkout -b beta
git push -u origin beta

Paso 9: escribir buenos mensajes de commit

feat(checkout): add Apple Pay support

Implementa Apple Pay vía la Web Payments API. Cae al flujo
existente de tarjeta si Apple Pay no está disponible. Closes #1234.

Paso 10: manejar squashes

- uses: amannn/action-semantic-pull-request@v5
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}