✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo usar ganchos de Git para detectar cambios en un archivo de bloqueo y mostrar un mensaje

14

Cuando trabajamos en un equipo colaborativo, de vez en cuando un desarrollador tiene que agregar un nuevo paquete a una rama que luego se fusiona con el maestro. Es posible que alguien no lo sepa y simplemente extraiga el maestro y ejecute la aplicación solo para que se bloquee debido al paquete faltante. Veamos cómo podemos usar ganchos de Git para detectar cambios en a package.jsono a yarn.locky mostrar un mensaje que le pide al usuario que instale las dependencias que faltan.

¿Qué son los ganchos de Git?

Los ganchos de Git se activan cuando ocurre algún evento de Git, como una nueva confirmación, enviar confirmaciones a una rama en línea, extraer confirmaciones, verificar una rama o fusionar una rama. Estos procesos terminan en 0 cuando terminan correctamente o algún otro valor cuando terminan incorrectamente.

Si el proceso enganchado termina en 0, la acción de Git continúa. De lo contrario, la acción de Git se bloquea. Por ejemplo, si configura un gancho de Git de confirmación previa para aplicar pelusa a su código, Git lo ejecutará cuando haga un git commit. Si la pelusa falla, la confirmación no se llevará a cabo.

Los ganchos de Git son algo integrado en Git y la lista de ganchos es muy extensa. Por ejemplo, tiene pre-push, post-commit, post-checkout, post-merge y muchos otros ganchos de Git.

Ejecute ganchos de Git con Husky

Para ejecutar algunas tareas cuando se disparan los ganchos de Git, podemos usar el paquete Husky para Node.js. Husky nos permite especificar en un package.jsonarchivo qué scripts se ejecutarán cuando se active un gancho de Git. Instale el paquete Husky con NPM:

npm i -D husky

o hilo:

yarn add -D husky

Ahora necesita inicializar Husky para ganchos de Git. Si usa NPM:

npx husky install

y si usas hilo

yarn husky install

y eso es todo, ahora ha instalado y configurado Husky para ejecutar ganchos de Git. ¡Finalmente es hora de definir un gancho!

Agregue un enlace Git posterior a la combinación para verificar los cambios en el archivo de bloqueo

Queremos ejecutar algún código que nos avise si los archivos package-lock.jsono yarn.lockhan cambiado. Esto sucede generalmente cuando extraemos mastery estos archivos han cambiado. Podemos configurar un enlace para que se ejecute cuando fusionamos una rama.

Para especificar nuestros enlaces Git a Husky, los definimos en el package.jsonarchivo. Agregue esto como una clave de nivel superior:

"husky": { "hooks": { "post-merge": "./githooks/post-merge-hook.sh" } }

Lo que esto dice es que después de fusionar una rama, ejecutaremos este script. Ahora tenemos que crearlo. Cree una carpeta, agréguele un archivo y configúrelo para que sea ejecutable:

mkdir githooks && cd githooks && touch post-merge-hook.sh && chmod +x post-merge-hook.sh

Si no lo configura para que sea ejecutable, se encontrará con un error "Permiso denegado" cuando Husky intente ejecutar este gancho de Git. Ahora edite el archivo con Vim o su editor favorito y pegue esto en él:

changedFiles="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)" runOnChange() { echo "$changedFiles" | grep -q "$1" && echo -e "$2" } runOnChange package-lock.json "033[35m*******************************************************************************n* 033[33mpackage-lock.json033[35m has changed. Run033[33m npm install033[35m to update your dependencies. *n*******************************************************************************" exit 0

Esto imprimirá un mensaje en morado con las palabras package-lock.jsony npm installen naranja. Este script verifica si package-lock.jsonse actualizó y, si desea probarlo yarn.lock, simplemente tendrá que reemplazar el nombre del archivo.

Pruebe la verificación de cambio de archivo de bloqueo

Probar esto no es demasiado complejo. Básicamente, solo necesita crear una nueva rama, instalar algún paquete para que package-lock.jsonse modifique, confirmarlo y cambiar a la rama anterior. Todo eso se puede hacer con este comando:

git checkout -b testbranch && npm i -D lint-staged && git add. && git commit -m "test" && git checkout -

Ahora necesitas fusionarlo en esta rama.

git merge testbranch

Esto activará el gancho posterior a la combinación y ejecutará nuestro script. Luego verá este mensaje en la línea de comando porque package-lock.jsonse modificó durante la fusión:

Detectar un cambio de archivo de bloqueo en VS Code

Este fue solo un uso. Los ganchos Git se pueden usar de muchas maneras, por ejemplo, para ejecutar el popular paquete Prettier antes de confirmar algo para formatear su código.

Hay alternativas para este caso en particular, de verificar si package-lock.jsonse actualizó. Por ejemplo, para VS Code hay un paquete ingenioso Refresh NPM Packages que le pedirá que actualice sus paquetes si detecta una modificación. Se ejecutará independientemente de si ha configurado ganchos de Git o no. Otra cosa buena es que funcionará cuando cambies de rama, incluso sin fusionar una de ellas con la otra.

Cómo usar ganchos de Git para detectar cambios en un archivo de bloqueo y mostrar un mensaje

Sin embargo, la ventaja de lo que hemos implementado aquí es que se ejecutará en la línea de comandos y no depende de un editor de código en particular. Si está trabajando, por ejemplo, en un proyecto de código abierto, es posible que desee configurar lo que se describe aquí para que haya un terreno común para todos los desarrolladores involucrados, independientemente de su configuración.

Fuente de grabación: startfunction.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More