Introduction - Lefthook Documentation
Resumen
Resumen Principal
Lefthook se presenta como un avanzado gestor de Git hooks, diseñado para optimizar y automatizar las tareas rutinarias dentro del ciclo de desarrollo. Su función principal es facilitar la instalación y configuración de hooks tanto a nivel de proyecto como global, permitiendo a los desarrolladores integrar procesos de verificación y formateo de código directamente en sus flujos de trabajo de Git. A través de un archivo de configuración (lefthook.yml) sumamente detallado, es posible definir reglas específicas para distintos hooks. Un ejemplo paradigmático es el uso del hook pre-commit, donde Lefthook puede ejecutar automáticamente linters como stylelint y eslint. Esta capacidad elimina la necesidad de ejecutar manualmente estas herramientas, garantizando la consistencia y calidad del código antes de cada commit. La configuración permite ejecutar trabajos en paralelo (parallel: true) para mejorar la eficiencia y usar patrones glob ("*.css", *.ts") para dirigir los linters solo a los archivos relevantes. Además, la opción stage_fixed: true asegura que cualquier corrección aplicada automáticamente por los linters sea añadida al área de preparación antes del commit final, lo que consolida un proceso de entrega de código impecable y sin esfuerzo.
Elementos Clave
- Gestión Eficiente de Git Hooks: Lefthook se posiciona como una herramienta esencial para la gestión de Git hooks, ofreciendo la flexibilidad de instalarse y configurarse tanto para un proyecto específico como de manera global. Esto permite estandarizar las prácticas de desarrollo y asegurar que ciertas acciones, como la validación de código, se ejecuten automáticamente en momentos clave del
Contenido
Introduction
Lefthook is a Git hooks manager. Here is how to
-
Install lefthook to your project or globally.
-
Configure
lefthook.ymlwith detailed options explanation.
Example: Run your linters on pre-commit hook and forget about the routine.
# lefthook.yml
pre-commit:
parallel: true
jobs:
- run: yarn run stylelint --fix {staged_files}
glob: "*.css"
stage_fixed: true
- run: yarn run eslint --fix "{staged_files}"
glob:
- "*.ts"
- "*.js"
- "*.tsx"
- "*.jsx"
stage_fixed: true