¿Tus commits son un desastre? Aprende a estandarizarlos con Commitlint, Husky y Commitizen

Tiempo de lectura: 4 minutos
¿Tus commits son un desastre? Aprende a estandarizarlos con Commitlint, Husky y Commitizen

¿Cuántas veces has revisado el historial de commits de un proyecto y te has encontrado con mensajes confusos, inconsistentes o simplemente inútiles? Si trabajas en equipo, sabrás que esto puede convertirse en una pesadilla. La falta de un estándar en los commits dificulta la comprensión de los cambios, la colaboración y el mantenimiento del proyecto. Pero, ¿y si te dijera que hay herramientas que pueden solucionar este problema?

En este post, te voy a enseñar cómo usar Commitlint, Husky y Commitizen para estandarizar tus commits y hacer que tu historial de Git sea mucho más limpio y ordenado.

¿Por qué estandarizar los commits?

Antes de entrar en materia, hablemos de por qué es importante estandarizar los commits:

  • Claridad: Mensajes de commit claros y concisos facilitan la comprensión de los cambios realizados.
  • Consistencia: Un estándar asegura que todos los commits sigan el mismo formato, lo que mejora la legibilidad del historial.
  • Colaboración: Un historial de commits ordenado facilita la colaboración entre los miembros del equipo.
  • Mantenimiento: Un historial claro facilita la identificación de errores y la realización de cambios en el futuro.

Commitlint, Husky y Commitizen: el trío perfecto

Estas tres herramientas trabajan juntas para ayudarte a estandarizar tus commits:

  • Commitlint: Esta herramienta verifica que los mensajes de commit cumplan con un estándar predefinido.
  • Husky: Husky te permite ejecutar scripts de Git antes de realizar un commit, lo que te permite verificar los mensajes con Commitlint.
  • Commitizen: Esta herramienta te guía en la creación de mensajes de commit que cumplen con el estándar.

¿Cómo usarlas?

Primero instalemos las dependencias:

yarn add -D @commitlint/cli @commitlint/config-conventional commitizen husky


Crear una configuración base para commitlint:

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

Crear una configuración base para commitizen:\

yarn commitizen init cz-conventional-changelog --yarn--dev--exact

Habilitar los hooks de husky:

npx husky install
npx husky add .husky/commit-msg 'yarn commitlint --edit $1'
npx husky add .husky/prepare-commit-msg "exec < /dev/tty && npx cz --hook || true"


Finalmente habilitar los scripts para que tanto husky como commitizen se disparen automáticamente, dentro del package.json en la sección de scripts agregamos estos dos:

{
  "scripts": {
    "prepare": "husky install",
    "commit": "git-cz"
  }
}

Con esto automáticamente cada vez que intentemos hacer un commit nos va a habilitar la herramienta para llenado de los mensajes de commit y se va a asegurar de que sigamos un estándar.

La regla para es sencilla: todo en minúsculas, un espacio entre los dos puntos y la descripción, y sin punto final. Así de simple.

Generalmente, solo escribo la primera línea, pero mira estos tipos que podemos usar para dejar todo organizado:

  • chore: Para esas actualizaciones que no tocan el código de producción, como cambios en herramientas, configuraciones y bibliotecas.
  • feat: Cuando añadimos una funcionalidad nueva o implementamos algo nuevo en el código.
  • fix: Para corregir esos bugs molestos que siempre aparecen.
  • refactor: ¿Sabes esos cambios en el código que no alteran la funcionalidad final? Entonces, es para eso.
  • docs: Cuando solo tocamos los archivos de documentación.
  • perf: Para esas alteraciones que hacen el código más rápido y eficiente.
  • style: Cuando cambiamos la formatación del código, como espacios en blanco, punto y coma, etc.
  • test: Para añadir o corregir pruebas en los procesos automatizados.
  • build: Para cambios en el sistema de construcción o en dependencias externas.
  • ci: Para cambios en los archivos y scripts de configuración de CI.
  • env: Para modificaciones o adiciones en archivos de configuración de CI.

Ejemplos de commits que te van a gustar:

  • chore: add commitlint y husky
  • chore(eslint): obligar el uso de comillas dobles en React
  • refactor: refactorizando el manejo de caché para usar Redis
  • feat: agregado AlovaJS para hacer el llamado a los APIs
  • feat(page/dashboard): creando el enrutamiento con React Router

Con estos commits estandarizados, es mucho más fácil entender lo que se hizo en el código. Y si trabajas solo, ¿te imaginas volver a un proyecto después de 6 meses? Con los commits organizados, recordarás todo mucho más rápido.

Conclusión:

Estandarizar tus commits puede parecer una tarea tediosa al principio, pero los beneficios a largo plazo son innegables. Con Commitlint, Husky y Commitizen, puedes crear un historial de Git limpio, ordenado y fácil de entender. ¡Anímate a probarlas y verás la diferencia!

Tags: Development |Clean Code |Programming
Iván Campaña
Escrito por Iván Campaña
Informático, Emprendedor, Desarrollador y Curioso a tiempo completo.