<?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: Evandro Ribeiro</title>
    <description>The latest articles on DEV Community by Evandro Ribeiro (@ribeiroevandro).</description>
    <link>https://dev.to/ribeiroevandro</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%2F24799%2F9c088666-091f-4254-962c-e7475a106249.jpeg</url>
      <title>DEV Community: Evandro Ribeiro</title>
      <link>https://dev.to/ribeiroevandro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ribeiroevandro"/>
    <language>en</language>
    <item>
      <title>Caminhos absolutos para imports no Expo, como fazer?</title>
      <dc:creator>Evandro Ribeiro</dc:creator>
      <pubDate>Thu, 14 Nov 2019 22:24:20 +0000</pubDate>
      <link>https://dev.to/ribeiroevandro/caminhos-absolutos-para-imports-no-expo-como-fazer-4opj</link>
      <guid>https://dev.to/ribeiroevandro/caminhos-absolutos-para-imports-no-expo-como-fazer-4opj</guid>
      <description>&lt;p&gt;Se você assim como eu usa a pasta &lt;code&gt;src&lt;/code&gt; como &lt;code&gt;root&lt;/code&gt; da aplicação, sabe que é bem chato importar componentes usando &lt;code&gt;../../&lt;/code&gt; para isso, fora quando você resolve mover um componente que hora foi criado local, mas por conta de ser reutilizado em outros lugares, decidiu mover ele para uma pasta global, ao fazer isso, o import era quebrar.&lt;br&gt;
A motivação para escrever esse post, veio porque resolvi esse &lt;em&gt;"problema"&lt;/em&gt;, com algumas configurações no &lt;code&gt;babel.config.js&lt;/code&gt; que vem por padrão em qualquer projeto &lt;strong&gt;Expo&lt;/strong&gt;, abaixo descrevo os passos necessários para que você possa configurar o seu projeto, e poder usar poder usar &lt;code&gt;~/&lt;/code&gt; e ao fazer isso, ele listar as pastas/arquivos na pasta &lt;code&gt;src&lt;/code&gt; definindo ela como &lt;strong&gt;root&lt;/strong&gt; no projeto.&lt;/p&gt;

&lt;p&gt;Vamos começar instalando o &lt;a href="https://github.com/entwicklerstube/babel-plugin-root-import" rel="noopener noreferrer"&gt;babel-plugin-root-import&lt;/a&gt; como uma dependência de desenvolvimento no projeto, abaixo um exemplo de como fazer isso!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add -D babel-plugin-root-import

ou

npm install babel-plugin-root-import --sav-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uma vez instalada a dependência, &lt;del&gt;&lt;em&gt;espero que tenha usado o yarn para isso&lt;/em&gt;&lt;/del&gt;, vamos alterar o &lt;code&gt;babel.config.js&lt;/code&gt;, por padrão ele vem assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;presets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;babel-preset-expo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas iremos altera-lo e deixar dessa forma aqui:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;presets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;babel-preset-expo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;babel-plugin-root-import&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;rootPathSuffix&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com isso, incluímos o &lt;code&gt;babel-plugin-root-import&lt;/code&gt; e definimos a pasta &lt;strong&gt;src&lt;/strong&gt;, como sendo nosso &lt;code&gt;rootPath&lt;/code&gt;. Boa parte já está feita, e para finalizar precisamos configurar o &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;, para que ele entenda a configuração e passe a usar a pasta &lt;strong&gt;src&lt;/strong&gt; de fato como sendo a raiz do projeto, e para isso, iremos criar na raiz do projeto um arquivo com o nome de &lt;code&gt;jsconfig.json&lt;/code&gt; e incluir a configuração que mostro abaixo:&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;"compilerOptions"&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;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&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;"paths"&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;"~/*"&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="s2"&gt;"src/*"&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="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;E com isso finalizamos todas as configurações necessárias, algo que é relativamente simples, eu concordo. &lt;/p&gt;

&lt;p&gt;Se você seguiu todos os passos e não teve nenhum problema, ao importar um componente agora, bastará usar &lt;code&gt;~/&lt;/code&gt; e o &lt;strong&gt;VSCode&lt;/strong&gt; irá listar todas as pastas e arquivos dentro da &lt;strong&gt;src&lt;/strong&gt;, na imagem abaixo um exemplo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8pp5qemtr4qaep19x053.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8pp5qemtr4qaep19x053.png" alt="Exemplo do resultado no VSCode ao importar um componente"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Considerações finais
&lt;/h3&gt;

&lt;p&gt;Esse é o meu primeiro post, já peço desculpas por algo estranho nele, mas mesmo sendo algo bem simples, achei legal compartilhar e mais importante, pela primeira vez, senti a vontade e confiança para escrever.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>reactnative</category>
      <category>expo</category>
    </item>
  </channel>
</rss>
