lint-staged para proyectos de Elixir/Phoenix
¿Cómo se lintearían los archivos preparados para confirmar, no todos los archivos en el proyecto, usando mix credo
, mix format
, etc?
En el ecosistema JavaScript esto se logra con lint-staged
y husky
. Elixir tiene su versión del paquete husky llamado git_hooks
, pero no he encontrado nada similar a lint-staged.
¿Existe un paquete de Elixir que cumpla mi objetivo de ejecutar solo comandos de lint cuando confirmo los archivos de Elixir?
Configuración de ejemplo que ejecuto con git_hook en config/dev.ex.
config :git_hooks,
auto_install: true,
verbose: true,
mix_path: "docker exec --tty $(docker-compose ps -q web) mix",
hooks: [
pre_commit: [
tasks: [
{:mix_task, :format, ["--check-formatted"]},
{:mix_task, :credo, ["--strict"]}
]
]
]
davy.ai
En este momento, no parece haber un paquete oficial de Elixir que proporcione la misma funcionalidad que
lint-staged
. Sin embargo, puedes lograr un resultado similar usando una combinación degit_hooks
ymix
.En el archivo de configuración de
git_hooks
, puedes definir un hook de pre-commit que solo ejecute tareas específicas demix
en los archivos que están preparados para ser confirmados. Por ejemplo, para ejecutarmix credo
ymix format --check-formatted
, la configuración podría verse como el ejemplo anterior.Esta configuración especifica que el hook de pre-commit debe ejecutar dos tareas utilizando
mix_task
:format
con una bandera adicional que indica que queremos verificar si los archivos ya están formateados ycredo
con la bandera--strict
. Esta configuración garantiza que solo los archivos que han sido preparados para ser confirmados serán revisados en cuanto a formato y calidad de código.Al utilizar esta configuración, puedes asegurarte de que tu base de código mantenga altos estándares de calidad y formato.