EditorConfig: define la configuración de estilo de tu proyecto

EditorConfig es un archivo de configuración portable que puedes incorporar en tu repositorio y que es entendido por un montón de editores de textos e IDEs, que te permite definir de una manera portable y sencilla la configuración de estilo de tu proyecto, por ejemplo, si quieres usar tabs o espacios y cuántos utilizar, qué tipo de caracter de fin de linea utilizar, o si quieres que te limpie automáticamente espacios al final de un archivo.

EditorConfig es una herramienta sencilla pero poderosa que nos permite mantener un estilo de código uniforme en nuestros proyectos, sin importar qué editor de texto o entorno de desarrollo utilicemos. Se basa en un archivo de configuración llamado .editorconfig que colocamos en la raíz de nuestro proyecto para definir reglas claras sobre la indentación, los saltos de línea, la codificación de caracteres y otros aspectos estilísticos del código.

Al crear este archivo, lo primero que solemos hacer es establecer root = true. Esto indica que este archivo es el principal y que no se deben buscar configuraciones superiores en directorios padres, evitando así conflictos si existen otros archivos .editorconfig en subcarpetas. Luego, definimos bloques con expresiones regulares que especifican a qué archivos se aplicarán las reglas que escribamos a continuación.

Por ejemplo, si queremos que una configuración afecte a todos los archivos del proyecto, usamos un bloque con un asterisco entre corchetes:

[*]

Dentro de este bloque podemos definir directivas clave-valor para controlar el estilo. Una de las más importantes es indent_style, que nos permite elegir entre espacios (space) o tabuladores (tab) para la indentación. Complementariamente, indent_size define cuántos espacios o el ancho que simula un tabulador. Así, podemos decidir que todo el proyecto use espacios de cuatro caracteres o tabuladores que equivalgan a ocho espacios, por ejemplo.

Otra directiva fundamental es end_of_line, que controla el tipo de salto de línea que queremos usar. Podemos elegir entre lf para saltos de línea estilo Unix (\n) o crlf para saltos de línea estilo Windows (\r\n). Esto es especialmente útil cuando trabajamos en equipos con diferentes sistemas operativos o cuando el proyecto tiene una convención establecida.

La codificación de caracteres también se puede definir con la directiva charset. Lo más habitual es usar utf8, que es la codificación universal, pero también podemos especificar otras como latin1 o variantes de utf16 si el proyecto lo requiere.

Para mantener el código limpio, podemos usar trim_trailing_whitespace con valor true, lo que asegura que al guardar se eliminen los espacios en blanco al final de cada línea, esos espacios invisibles que a veces se cuelan y pueden generar problemas o confusión. Además, insert_final_newline con valor true garantiza que siempre haya una línea en blanco al final del archivo, algo que algunas herramientas como Git esperan para evitar advertencias.

Un aspecto muy interesante de EditorConfig es que podemos definir reglas específicas para ciertos tipos de archivos usando expresiones regulares más concretas. Por ejemplo, si queremos que los archivos JavaScript usen una indentación diferente, podemos crear un bloque así:

[*.js]
indent_size = 2

Esto hará que, aunque el resto del proyecto use ocho espacios para indentación, los archivos .js se ajusten a dos espacios, respetando convenciones comunes en JavaScript. Podemos combinar extensiones usando llaves para aplicar reglas a varios tipos de archivos a la vez, como:

[*.{js,ts,jsx,tsx}]
indent_size = 2

También es posible apuntar a archivos específicos, como package.json, para aplicar configuraciones excepcionales.

En cuanto a las expresiones regulares, un solo asterisco * coincide con cualquier nombre de archivo en la carpeta actual, mientras que el doble asterisco ** se usa para incluir subdirectorios en la coincidencia, aunque en la práctica para la mayoría de casos un solo asterisco es suficiente.

Para poner en práctica esta configuración, basta con crear el archivo .editorconfig en la raíz del proyecto y, si nuestro editor no soporta EditorConfig de forma nativa, instalar una extensión o plugin que lo habilite. Por ejemplo, en Visual Studio Code podemos instalar la extensión oficial de EditorConfig y ver cómo automáticamente se aplican las reglas definidas al abrir o guardar archivos.

Un ejemplo básico de un archivo .editorconfig podría ser:

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf8
trim_trailing_whitespace = true
insert_final_newline = true

[*.js]
indent_size = 2

Con esta configuración, aseguramos que todo el proyecto use espacios para la indentación con un tamaño de cuatro, saltos de línea estilo Unix, codificación UTF-8, eliminación de espacios finales y línea final en blanco. Pero para los archivos JavaScript, la indentación será de dos espacios, adaptándose a las convenciones más comunes en ese lenguaje.

EditorConfig es una forma sencilla y efectiva de evitar discusiones sobre estilo de código y de mantener un código limpio y consistente, facilitando la colaboración en equipo y la revisión de código. Al definir estas reglas en un archivo que viaja con el proyecto, nos aseguramos de que todos los desarrolladores trabajen con las mismas normas, independientemente de sus preferencias o del editor que utilicen.

Lista de reproducción
  1. 1
    EditorConfig: define la configuración de estilo de tu proyecto
    13 minutos
  2. 2
    Entendiendo la recursividad con las Torres de Hanoi
    5 minutos
  3. 3
    Demo práctica de Whisper, la IA gratuita y libre de OpenAI para transcribir audio
    12 minutos
  4. 4
    ¿Qué son los health checks?
    5 minutos
  5. 5
    Quiero hacer una aplicación web en Rust: ¿qué framework uso?
    6 minutos