<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Erick Sarabia</title>
    <description>The latest articles on DEV Community by Erick Sarabia (@ericksarabia).</description>
    <link>https://dev.to/ericksarabia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F224007%2F7d6412b4-5edc-4c8f-a3ea-691083f0f9ca.jpg</url>
      <title>DEV Community: Erick Sarabia</title>
      <link>https://dev.to/ericksarabia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ericksarabia"/>
    <language>en</language>
    <item>
      <title>Código limpio y consistente. ESLint + Prettier en tus proyectos con React.</title>
      <dc:creator>Erick Sarabia</dc:creator>
      <pubDate>Thu, 12 Dec 2019 23:49:42 +0000</pubDate>
      <link>https://dev.to/ericksarabia/codigo-limpio-y-consistente-eslint-prettier-en-tus-proyectos-con-react-462f</link>
      <guid>https://dev.to/ericksarabia/codigo-limpio-y-consistente-eslint-prettier-en-tus-proyectos-con-react-462f</guid>
      <description>&lt;p&gt;Mantener la calidad de código en los proyectos se ha vuelto un dolor de cabeza, especialmente cuando se trabaja en equipo. Hoy en día es importante estandarizar el estilo y formato de código, esto puede traer distintos beneficios:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👍🏼 Asegurar que el equipo utilice buenas prácticas de codificación.&lt;/li&gt;
&lt;li&gt;⏱ Reducir el tiempo de &lt;em&gt;code review&lt;/em&gt; dejando de lado errores de sintaxis y estilo.&lt;/li&gt;
&lt;li&gt;⚠️ Evitar &lt;em&gt;logs&lt;/em&gt; no deseados en producción.&lt;/li&gt;
&lt;li&gt;🐞 Identificar errores antes de compilar.&lt;/li&gt;
&lt;li&gt;💻 Conocer y adoptar las prácticas de codificación que implementan grandes empresas (Airbnb, Google).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://eslint.org/" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt; y &lt;a href="https://prettier.io/" rel="noopener noreferrer"&gt;Prettier&lt;/a&gt; nos ayudarán a seguir un estilo en nuestro código, mejorando la calidad, legibilidad y mantenibilidad.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es ESLint?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://eslint.org/" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt; es un linter para Javascript. Su función principal es analizar nuestro código, buscar problemas y resolverlos. Dispone de una gran cantidad de &lt;a href="https://eslint.org/docs/rules/" rel="noopener noreferrer"&gt;reglas&lt;/a&gt;, con base en su documentación podemos especificar lo que deseamos aplicar.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Qué es Prettier?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://prettier.io/" rel="noopener noreferrer"&gt;Prettier&lt;/a&gt; es un &lt;em&gt;formateador de código&lt;/em&gt; con soporte para muchos lenguajes e integración con la mayoría de editores de código. Su función principal es analizar y re-escribir código aplicando el mismo formato.&lt;/p&gt;

&lt;h3&gt;
  
  
  Implementación
&lt;/h3&gt;

&lt;p&gt;Para esta implementación tu puedes hacer uso de cualquier herramienta o framework basado en react. Particularmente yo he decidido utilizar &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt;. Puedes hacer uso de &lt;a href="https://yarnpkg.com/" rel="noopener noreferrer"&gt;yarn&lt;/a&gt; o &lt;a href="https://www.npmjs.com/" rel="noopener noreferrer"&gt;npm&lt;/a&gt; para instalar las dependencias, toma en cuenta que todo deberá ser instalado como &lt;strong&gt;dependencias de desarrollo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Comencemos instalando &lt;strong&gt;ESLint&lt;/strong&gt; y &lt;strong&gt;Prettier&lt;/strong&gt;, además de los paquetes necesarios para que se integren uno al otro correctamente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;### yarn&lt;/span&gt;
yarn add &lt;span class="nt"&gt;-D&lt;/span&gt; eslint prettier babel-eslint eslint-config-prettier eslint-plugin-prettier
&lt;span class="c"&gt;### npm&lt;/span&gt;
npm i &lt;span class="nt"&gt;-D&lt;/span&gt; eslint prettier babel-eslint eslint-config-prettier eslint-plugin-prettier
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/babel-eslint" rel="noopener noreferrer"&gt;babel-eslint&lt;/a&gt;: Permite que &lt;strong&gt;ESLint&lt;/strong&gt; entienda código Javascript más avanzado ES6+.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/eslint-config-prettier" rel="noopener noreferrer"&gt;eslint-config-prettier&lt;/a&gt;: Desactiva todas las reglas de &lt;strong&gt;ESLint&lt;/strong&gt; que puedan entrar en conflicto con &lt;strong&gt;Prettier&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/eslint-plugin-prettier" rel="noopener noreferrer"&gt;eslint-plugin-prettier&lt;/a&gt;: Permite visualizar issues de &lt;strong&gt;Prettier&lt;/strong&gt; como reglas de &lt;strong&gt;ESLint&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ahora que hemos agregado las dependencias necesarias, es tiempo de crear los archivos de configuración para &lt;strong&gt;ESLint&lt;/strong&gt; y &lt;strong&gt;Prettier&lt;/strong&gt;. En la raíz de nuestro proyecto vamos a crear un archivo llamado &lt;code&gt;.prettierrc&lt;/code&gt; con el siguiente contenido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="nl"&gt;"printWidth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trailingComma"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"all"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tabWidth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="nl"&gt;"semi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; 
    &lt;/span&gt;&lt;span class="nl"&gt;"singleQuote"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prettier&lt;/strong&gt; ofrece algunas otras &lt;a href="https://prettier.io/docs/en/options.html" rel="noopener noreferrer"&gt;opciones&lt;/a&gt; que si lo deseas puedes quitar o agregar de acuerdo a tus preferencias.&lt;/p&gt;

&lt;p&gt;El siguiente paso es crear el archivo &lt;code&gt;.eslintrc&lt;/code&gt; al mismo nivel que el anterior, agregando lo siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier/react"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"parser"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"babel-eslint"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"prettier/prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;De igual forma que en el archivo anterior, tú puedes editar las &lt;a href="https://eslint.org/docs/rules/" rel="noopener noreferrer"&gt;reglas&lt;/a&gt; de este archivo como lo prefieras.&lt;/p&gt;

&lt;h3&gt;
  
  
  Guía de estilos Airbnb
&lt;/h3&gt;

&lt;p&gt;Como lo comente al inicio de este post, podemos implementar las guías de estilos de Airbnb o Google. Yo recomiendo utilizar la guía de estilos de Airbnb, en mi experiencia considero que esta muy completa y se actualiza constantemente, además de tener soporte para React.&lt;/p&gt;

&lt;p&gt;Vamos a proceder instalando los siguientes paquetes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;### yarn&lt;/span&gt;
yarn add &lt;span class="nt"&gt;-D&lt;/span&gt; eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
&lt;span class="c"&gt;### npm&lt;/span&gt;
npm i &lt;span class="nt"&gt;-D&lt;/span&gt; eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/eslint-config-airbnb" rel="noopener noreferrer"&gt;eslint-config-airbnb&lt;/a&gt;: Proporciona el &lt;code&gt;.eslintrc&lt;/code&gt; de Airbnb para hacer uso de su configuración de una  forma compartida.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/eslint-plugin-import" rel="noopener noreferrer"&gt;eslint-plugin-import&lt;/a&gt;: Da el soporte necesario para la importación y exportación en ES6+ previniendo issues con las rutas y nombres de archivos.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/evcohen/eslint-plugin-jsx-a11y" rel="noopener noreferrer"&gt;eslint-plugin-jsx-a11y&lt;/a&gt;: Revisa las reglas de accesibilidad dentro de los elementos JSX.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/yannickcr/eslint-plugin-react" rel="noopener noreferrer"&gt;eslint-plugin-react&lt;/a&gt;: Habilita reglas específicas de &lt;strong&gt;ESLint&lt;/strong&gt; para React.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Después de la instalación, es necesario actualizar el archivo &lt;code&gt;.eslintrc&lt;/code&gt; para poder extender la configuración de Airbnb.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"extends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"airbnb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier/react"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"parser"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"babel-eslint"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"plugins"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"prettier"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"prettier/prettier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como podrás darte cuenta, hemos extendido la configuración que &lt;strong&gt;ESLint&lt;/strong&gt; tiene por default. Ahora tenemos soporte para la guía de estilos de Airbnb y &lt;strong&gt;Prettier&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integración en Visual Studio Code
&lt;/h3&gt;

&lt;p&gt;Es tiempo de añadir un &lt;em&gt;plus&lt;/em&gt; a nuestra configuración. Para este caso vamos a hacerlo en &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; pero es posible realizar la misma integración en cualquier otro editor. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Instalar la extensión de &lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint" rel="noopener noreferrer"&gt;ESLint&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Instalar la extensión de &lt;a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode" rel="noopener noreferrer"&gt;Prettier&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ir a las preferencias de Visual Studio Code y agregar las siguientes dos líneas al archivo &lt;code&gt;settings.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.formatOnSave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"editor.codeActionsOnSave"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"source.fixAll.eslint"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con esto configurado, &lt;strong&gt;ESLint&lt;/strong&gt; y &lt;strong&gt;Prettier&lt;/strong&gt; harán su trabajo en cada uno de nuestros archivos cuando estos sean modificados y guardados.&lt;/p&gt;

</description>
      <category>react</category>
      <category>eslint</category>
      <category>prettier</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
