Estoy usando Prettier en mi proyecto TypeScript. Formato todos los archivos al guardarlos en Visual Studio Code. También configuré un git hook de confirmación previa con Husky que verifica el formato de todos los archivos.
Así es como se ve mi archivo de enlace pre-commit :
#!/bin/sh . "$(dirname "$0")/_/husky.sh" cd ./MyApp/ClientApp npx prettier --check . Ahora viene la parte divertida. Trabajo con archivos en el directorio MyApp/ClientApp con VS Code, que hace todo el formato al guardar. Hasta aquí todo bien.
Sin embargo, cuando intento realizar una confirmación, se ejecuta el gancho de confirmación previa de Prettier y aparece el siguiente error:
git commit Checking formatting... [warn] src\dataTypes\numeratorObjectType.ts [warn] src\viewModels\numeratorViewModel.ts [warn] Code style issues found in the above file(s). Forgot to run Prettier? husky - pre-commit hook exited with code 1 (error)Si abro estos archivos en VS Code y los guardo, no pasa nada porque ya han sido formateados.
Así que ejecuto Prettier manualmente ejecutando el siguiente comando en el directorio MyApp/ClientApp :
npx prettier --write .Este comando genera todos los archivos, con los dos problemáticos aparentemente reformateados:
También veo estos archivos cambiados en git. Sin embargo, git diff no muestra nada. Cuando ejecuto git add . , recibo la siguiente advertencia:
The file will have its original line endings in your working directory. warning: LF will be replaced by CRLFLo que significa que estos archivos solo tenían problemas con los finales de línea. De acuerdo con este hilo , configuré los siguientes parámetros de configuración en mi repositorio de git:
git config core.autocrlf true git config core.safecrlf false Parece que desaparece la advertencia con CRLF al hacer git add , pero aún no resuelve el problema con Prettier. Todavía muestra problemas de estilo de código, aunque no hay diferencias reales/problemas de estilo en los archivos.
Estoy en Windows, ya que eso podría ser importante, supongo.
¿Alguna idea de lo que puede estar mal aquí? Actualmente, verificar el formato de Prettier en el enlace previo a la confirmación no tiene sentido.
Después de profundizar más en el problema y gracias a los comentarios de @eDonkey y @torek , encontré una solución. Lo probé durante 2 días y parece funcionar.
Tenga en cuenta que esta solución probablemente funcione para un proyecto con desarrolladores solo de Windows. Si todos ustedes están en Mac/Linux, probablemente querrán usar LF en lugar de CRLF. Si el equipo es mixto, no estoy seguro de que haya una solución perfecta aquí.
Primero, configure git para que no haga la conversión CRLF -> LF:
git config core.autocrlf falseA continuación, configure Prettier para usar CRLF como carácter de final de línea. Puede hacerlo agregando la siguiente configuración en el archivo de configuración de Prettier :
"endOfLine": "crlf" Si algunos de sus archivos ya tienen terminaciones de línea LF, es posible que deba convertirlos a CRLF. Es suficiente usar npx prettier --write . para eso.
Lo único que noté es que git ahora agrega el carácter ^M al final de cada línea:
Pero no es un problema para mí.