A veces, se suelen pasar por alto a la hora de desarrollar un proyecto temas como la codificación de caracteres, la indentación del código o el tipo de saltos de línea.

Puntos que no deben faltar en una buena guía de desarrollo que comparta todo el equipo y que se debería seguir siempre desde el comienzo con el fin de evitarnos futuros problemas por incompatibilidades. Normalmente, una vez definido, solemos configurar de esa forma nuestro editor preferido; esto, por supuesto, es bueno, pero si por cualquier circunstancia hay un proyecto determinado cuya configuración de alguno de esos puntos mencionados al principio es distinta, tendremos un conflicto entre las propias características del proyecto y la configuración de nuestro editor.

EditorConfig viene a echarnos una mano evitando ese tipo de problemas. Se trata de un archivo de configuración en el que definimos todas estas características, de forma genérica o filtrando según la extensión del archivo, y que se reposita junto con el proyecto. De esta forma, a cualquiera que trabaje sobre el proyecto, se le aplicará automáticamente la configuración sin alterar la propia de su editor. Tan solo tendremos que instalar una extensión si el editor que usamos no es uno de los que lo traen por defecto instalado consultándolo en la lista de editores soportados.

El funcionamiento es bien sencillo:

  1. Creamos un archivo .editorconfig que guardaremos en el directorio raiz de nuestro proyecto.
  2. Lo editamos para añadir la configuración que deseemos. En nuestro caso queremos que se utilice el fin de línea de Unix, una codificación de caracteres en UTF-8 y que la indentación sea con 2 espacios.

    # EditorConfig is awesome: http://EditorConfig.org
    # top-most EditorConfig file
    root = true
    # Unix-style newlines with a newline ending every file
    [*]
    end_of_line = lf
    insert_final_newline = true
    # Matches multiple files with brace expansion notation
    # Set default charset
    [*.{html,css,js}]
    charset = utf-8
    # 2 space indentation
    [*.{html,css,js}]
    indent_style = space
    indent_size = 2
  3. Guardamos y hacemos commit de nuestros cambios.

La próxima vez que abramos cualquier archivo del proyecto, aunque se hubiera guardado con una configuración diferente, se nos mostrará en nuestro editor con la configuración establecida.