Implementacion de gestion de versiones con Changeset y Claude Code
Aprende a implementar la gestion de versiones basada en Changeset y la generacion automatica de CHANGELOG con Claude Code. Cubre soporte para monorepo, integracion con CI y diseno de flujo de lanzamiento.
Gestion sistematica de versiones con Changeset
Changeset es una herramienta que automatiza la gestion de versiones de paquetes y la generacion de CHANGELOG. Es especialmente poderosa en entornos monorepo, permitiendo construir flujos de lanzamiento consistentes que consideran las dependencias entre paquetes. Claude Code proporciona soporte preciso desde la configuracion hasta la integracion con CI.
Configuracion inicial
Pidamos a Claude Code que realice la configuracion.
> Introduce Changeset en el proyecto monorepo.
> Incluye lanzamiento automatico con GitHub Actions y generacion de CHANGELOG.
# Instalacion
npm install -D @changesets/cli @changesets/changelog-github
# Inicializacion
npx changeset init
// .changeset/config.json
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": [
"@changesets/changelog-github",
{ "repo": "your-org/your-repo" }
],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": [],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
}
}
Creacion de un Changeset
A continuacion se muestra como crear un archivo Changeset que describe los cambios realizados.
# Crear un Changeset de forma interactiva
npx changeset
<!-- .changeset/happy-dogs-fly.md -->
---
"@myapp/ui": minor
"@myapp/utils": patch
---
Se agrego la variante "outline" al componente de boton.
Se mejoraron las definiciones de tipos de las funciones utilitarias.
Ejemplo de prompt para pedir a Claude Code que cree un Changeset.
> Crea un Changeset para los cambios realizados.
> Con un cambio de version minor para @myapp/ui, incluyendo la descripcion.
Configuracion de npm scripts
// package.json
{
"scripts": {
"changeset": "changeset",
"changeset:status": "changeset status",
"version": "changeset version",
"release": "changeset publish",
"prerelease": "npm run build"
}
}
Lanzamiento automatico con GitHub Actions
Este workflow crea automaticamente un PR de actualizacion de version al hacer merge, y publica en npm despues del merge.
# .github/workflows/release.yml
name: Release
on:
push:
branches: [main]
concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: write
pull-requests: write
packages: write
jobs:
release:
name: Release
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
- name: Create Release Pull Request or Publish
id: changesets
uses: changesets/action@v1
with:
version: npm run version
publish: npm run release
title: "chore: actualizacion de version"
commit: "chore: actualizacion de version"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Configuracion avanzada para monorepo
Patrones de configuracion para gestionar la coordinacion entre paquetes.
// .changeset/config.json
{
"changelog": [
"@changesets/changelog-github",
{ "repo": "your-org/your-repo" }
],
"commit": false,
"fixed": [
["@myapp/core", "@myapp/cli"]
],
"linked": [
["@myapp/ui", "@myapp/theme"]
],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch"
}
- fixed - Grupo de paquetes que siempre mantienen la misma version
- linked - Grupo de paquetes cuyas versiones se incrementan de forma coordinada
Gestion de prelanzamientos
Flujo de lanzamiento para versiones beta y RC.
# Entrar en modo de prelanzamiento
npx changeset pre enter beta
# Agregar Changeset
npx changeset
# Aplicar la version de prelanzamiento
npx changeset version
# => 1.0.0 -> 1.1.0-beta.0
# Publicar
npx changeset publish
# Salir del modo de prelanzamiento
npx changeset pre exit
Validacion de Changeset
Workflow para verificar en CI si un PR incluye un Changeset.
# .github/workflows/changeset-check.yml
name: Changeset Check
on:
pull_request:
branches: [main]
jobs:
changeset-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- name: Check for changeset
run: npx changeset status --since=origin/main
Formato personalizado de CHANGELOG
Patron para personalizar la salida del CHANGELOG.
// .changeset/changelog-config.ts
import type { ChangelogFunctions } from "@changesets/types";
const changelogFunctions: ChangelogFunctions = {
getDependencyReleaseLine: async () => "",
getReleaseLine: async (changeset, type) => {
const [firstLine, ...rest] = changeset.summary
.split("\n")
.map((l) => l.trimEnd());
const date = new Date().toISOString().slice(0, 10);
let returnVal = `- ${firstLine}`;
if (rest.length > 0) {
returnVal += `\n${rest.map((l) => ` ${l}`).join("\n")}`;
}
return returnVal;
},
};
export default changelogFunctions;
Resumen
Changeset es una herramienta poderosa para automatizar la gestion sistematica de versiones y los flujos de lanzamiento. Aprovechando Claude Code, puedes construir eficientemente desde la configuracion inicial hasta la integracion con CI y el soporte para monorepo.
Para las metodologias de gestion de monorepo, consulta la guia de gestion de monorepo, y para el diseno de pipelines CI/CD, consulta la guia de configuracion de CI/CD. Tambien revisa la documentacion oficial de Changesets.
Related Posts
Domina los Hooks de Claude Code: Formateo automático, tests automáticos y más
Aprende a configurar formateo y tests automáticos con los hooks de Claude Code. Incluye ejemplos prácticos de configuración y casos de uso reales.
Configuración de servidores MCP en Claude Code y casos de uso prácticos
Guía completa sobre las capacidades de servidores MCP en Claude Code. Aprende a conectar herramientas externas, configurar servidores y explora ejemplos de integración reales.
Guía completa para escribir CLAUDE.md: Mejores prácticas de configuración de proyectos
Una guía exhaustiva para escribir archivos CLAUDE.md efectivos. Aprende a comunicar tu stack tecnológico, convenciones y estructura de proyecto para maximizar la calidad de las respuestas de Claude Code.