Creé una nueva aplicación Vue3 usando Vue CLI y seleccioné Prettier para mi configuración de linter. Quiero usar commitlint, husky y lint-staged para validar los mensajes de confirmación y borrar el código antes de enviarlo.
Lo que hice
Basado en https://commitlint.js.org/#/guides-local-setup , configuro commitlint con husky
npm install --save-dev @commitlint/{cli,config-conventional} echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js npm install husky --save-dev npx husky install npx husky add .husky/commit-msg 'npx --no -- commitlint --edit $1'
Basado en https://github.com/okonet/lint-staged#installation-and-setup Configuré lint-staged
npx mrm@2 lint-staged
y dentro del paquete.json lo reemplazo
"lint-staged": { "*.js": "eslint --cache --fix" }
con
"lint-staged": { "*": "npm run lint" }
El problema
Al modificar el archivo README.md en el proyecto para
# my-repo --- new commit
e intente confirmar que recibo el siguiente mensaje de error
> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file - [STARTED] Preparing... [SUCCESS] Preparing... [STARTED] Running tasks... [STARTED] Running tasks for * [STARTED] npm run lint [FAILED] npm run lint [FAILED] [SUCCESS] Running tasks... [STARTED] Applying modifications... [SKIPPED] Skipped because of errors from tasks. [STARTED] Reverting to original state because of errors... [SUCCESS] Reverting to original state because of errors... [STARTED] Cleaning up... [SUCCESS] Cleaning up... ✖ npm run lint: > my-repo@0.1.0 lint > vue-cli-service lint "/home/.../my-repo/README.md" error: Parsing error: Invalid character at README.md:1:1: > 1 | # my-repo | ^ 2 | 3 | --- 4 | 1 error found. npm ERR! code 1 npm ERR! path /home/my-repo npm ERR! command failed npm ERR! command sh -c lint-staged npm ERR! A complete log of this run can be found in: npm ERR! /home/.../.npm/_logs/2021-12-27T10_07_27_498Z-debug.log husky - pre-commit hook exited with code 1 (error)
que deberia hacer
Solo corrige los archivos que han sido modificados. El linter conoce los archivos que puede reparar (js, ts, vue, html, ...).
Cuando tengo un archivo de descuento modificado, no obtengo errores al abrir la terminal y ejecutar npm run lint
. Pero recibo errores cuando uso lint-staged con esta configuración "*": "npm run lint"
¿Cuál es la configuración correcta para lint-staged para lint archivos "lintable" solamente?
debe realizar ajustes adicionales para las extensiones de archivo:
"lint-staged": { "*.{js,vue}": [ "prettier src --write", "eslint --ext .js,.vue --ignore-path .gitignore --fix src" ], "*.{md,scss}": [ "prettier src --write" ] }