es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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"]}
]
]
]

Tags:  , ,

Answer

  1. Avatar for 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 de git_hooks y mix.

    En el archivo de configuración de git_hooks, puedes definir un hook de pre-commit que solo ejecute tareas específicas de mix en los archivos que están preparados para ser confirmados. Por ejemplo, para ejecutar mix credo y mix 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 y credo 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.

Comments are closed.