La intención de este repo es crear una receta para añadir hooks a git.
Hooks instalados:
- Lint-staged: Verifica el estilo del código
- Talisman: Verifica que no se suba información sensible
Herramientas:
- Husky: Herramienta para correr un asociar un script a un hook de git
-
Crear una nueva carpeta e iniciar git y npm:
npm init
git init
-
Crear el archivo .gitignore
-
Instalar eslint (vamos a usar la guía de estilo de airbnb)
3.1 Añadir los paquete con el siguiente comando
npm i eslint eslint-config-airbnb-base eslint-plugin-import --save-dev
3.2 Configurar lint para que use la guía de estilo de airbnb
echo 'module.exports = { "extends": "airbnb-base" };' > .eslintrc.js
3.3 Añadir script a package.json
"lint": "./node_modules/.bin/eslint ./src --ext .js --ext .jsx --cache"
-
Instalar Husky 🌵
Si ya tienes instalado talisman instalado primero borramos el hook
rm .git/hooks/pre-commit
antes de instalar Huskynpm i husky --save-dev
Verificar los hooks instalados por husky
ls -a .git/hooks
-
Instalar lint-staged
npm i lint-staged --save-dev
crear el archivo lint-staged.config.js y añadir la siguiente configuración
module.exports = { linters: { '*.js': ['eslint'], }, };
-
Instalar Talisman.
6.1 Instalar Talisman globalmente
curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/master/global_install_scripts/install.bash > /tmp/install_talisman.bash && /bin/bash /tmp/install_talisman.bash
6.2 Especificar TALISMAN_HOME (bashrc o profile)
6.3 Especificar "Git template directory" (se recomienda dejarlo por defecto)
6.4 Definir directorio de los repositorios de GIT que queremos escanear con Talisman (Talisman va añadir el script de pre-commit a todos los repositorios del directorio especificado)
6.5 Hacer un source del archivo donde se añadio la variable (bashrc o profile)
-
Configurar husky. En
package.json
añadir los siguiente:"husky": { "hooks": { "pre-commit": "$TALISMAN_HOME/talisman_hook_script pre-commit && lint-staged" } }
-
Añadir excepciones en .talismanrc en caso de ser necesario
fileignoreconfig: - filename: .env checksum: checksum-number ignore_detectors: [filename] - filename: file.js checksum: checksum-number ignore_detectors: [filecontent]