<?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>Forem: Matheus Azambuja</title>
    <description>The latest articles on Forem by Matheus Azambuja (@matheushas).</description>
    <link>https://forem.com/matheushas</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%2F247061%2Fb265fc6f-d0a3-4f94-a2ac-56477dfc2d83.jpeg</url>
      <title>Forem: Matheus Azambuja</title>
      <link>https://forem.com/matheushas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/matheushas"/>
    <language>en</language>
    <item>
      <title>Como reduzir o "copia &amp; cola" no seu dia-a-dia com Code Generators</title>
      <dc:creator>Matheus Azambuja</dc:creator>
      <pubDate>Mon, 26 Dec 2022 17:10:50 +0000</pubDate>
      <link>https://forem.com/matheushas/como-reduzir-o-copia-cola-no-seu-dia-a-dia-code-generators-2n3d</link>
      <guid>https://forem.com/matheushas/como-reduzir-o-copia-cola-no-seu-dia-a-dia-code-generators-2n3d</guid>
      <description>&lt;p&gt;Alguma vez você já notou que existem algumas coisas que você faz no dia a dia como desenvolvedor é repetitiva? não? Exatamente, as vezes a gente nem nota, só faz no "modo automático". Esse post vai te ajudar a melhorar sua produtividade pra algumas tarefas monotonas do dia a dia.&lt;/p&gt;

&lt;p&gt;Vou dar um exemplo, criar um componente, vamos supor que em seu projeto sua stack seja um &lt;code&gt;React + styled components&lt;/code&gt; para criar seus componentes.&lt;/p&gt;

&lt;p&gt;Esse é apenas um EXEMPLO, utilizando no contexto que mais estou vivenciando no momento, pensando no FRONTEND, mas, você pode usar para qualquer contexto, backend, c#, php, python e por ai vai!&lt;/p&gt;

&lt;p&gt;Neste post, vamos utilizar da ferramenta &lt;a href="https://www.hygen.io/" rel="noopener noreferrer"&gt;hygen&lt;/a&gt; para nos ajudar a criar nossos templates!&lt;br&gt;
O hygen utiliza de templates com &lt;a href="https://ejs.co/" rel="noopener noreferrer"&gt;EJS&lt;/a&gt; para facilitar o entendimento e criação desses templates.&lt;/p&gt;
&lt;h2&gt;
  
  
  Iniciando com Hygen
&lt;/h2&gt;

&lt;p&gt;Primeiramente vamos entender como funciona o Hygen, para isso, vamos criar um &lt;strong&gt;projeto do 0&lt;/strong&gt;, bem simples.&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;# 1 - criar pasta&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;nome-da-pasta-aqui

&lt;span class="c"&gt;# 2 - acessar pasta&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;nome-da-pasta-aqui

&lt;span class="c"&gt;# 3 - inicialize um projeto&lt;/span&gt;
npm init &lt;span class="nt"&gt;--yes&lt;/span&gt;

&lt;span class="c"&gt;# 4 - instale o pacote do Hygen&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; hygen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feito isso, agora crie uma estrutura como a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_templates/
└── component
    └── new
        ├── component.ejs.t
        └── prompt.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e os conteudos dos arquivos são:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;_templates/component/new/prompt.js&lt;/code&gt;&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="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// nome da variável para utilizar nos templates&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Qual é o nome do componente?&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;&lt;code&gt;_templates/component/new/component.ejs.t&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;components&lt;/span&gt;&lt;span class="o"&gt;/&amp;lt;%=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;changeCase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;param&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="sr"&gt;/index.ts&lt;/span&gt;&lt;span class="err"&gt;x
&lt;/span&gt;&lt;span class="nx"&gt;unless_exists&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="o"&gt;---&lt;/span&gt;
&lt;span class="c1"&gt;// Hey, esse é meu componente &amp;lt;%= name %&amp;gt;, mas seu arquivo &lt;/span&gt;
&lt;span class="c1"&gt;// está criado na pasta `&amp;lt;%= h.changeCase.param(name) %&amp;gt;/index.tsx`&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;changeCase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pascal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&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="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
            &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;My&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;component&lt;/span&gt; &lt;span class="k"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;HERE&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;changeCase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;pascal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Entendendo os arquivos
&lt;/h3&gt;

&lt;p&gt;E antes de mais nada vamos entender melhor esses arquivos.&lt;/p&gt;

&lt;p&gt;Para começar a utilizar generators\templates, você vai precisar de algumas variáveis, como por exemplo, o nome do componente, pois essa informação afeta onde esse arquivo vai ser criado, o nome dos arquivos e variáveis dentro do código.&lt;/p&gt;

&lt;p&gt;Começando pelo &lt;code&gt;prompt.js&lt;/code&gt;, então ele é simplesmente o arquivo responsável por obter todas as variáveis inicias que precisamos pra gerar um template legalzão! Vale observar que esse arquivo exporta um &lt;code&gt;array&lt;/code&gt; portanto, caso necessário, é possível adicionar mais perguntas.&lt;/p&gt;

&lt;p&gt;Já o &lt;code&gt;component.ejs.t&lt;/code&gt; é um arquivo dividido em duas principais partes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzy7j8oop40rwccnwjjf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzy7j8oop40rwccnwjjf7.png" alt=" " width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Cabeçalho possui alguns parâmetros de configuração que definem algumas coisas desse template, como destino &lt;strong&gt;(to)&lt;/strong&gt;, se vai ser criado apenas se não existir &lt;strong&gt;(unless_exists)&lt;/strong&gt;, e existem algumas outras opções que podem ser utilizadas por ai, você pode consultar todas aqui &lt;a href="https://www.hygen.io/docs/templates#all-frontmatter-properties" rel="noopener noreferrer"&gt;nesse link sobre "frontmatter and properties"&lt;/a&gt; da documentação do hygen.&lt;/p&gt;

&lt;p&gt;Para escrever em tela alguma variável no &lt;code&gt;EJS&lt;/code&gt; basta você mandar um &lt;code&gt;&amp;lt;%= nome_da_variavel %&amp;gt;&lt;/code&gt;, onde o &lt;code&gt;nome_da_variavel&lt;/code&gt; é o mesmo definido no &lt;code&gt;prompt.js&lt;/code&gt; e pronto! &lt;/p&gt;

&lt;p&gt;Mas olhando aqui no meio do parâmetro &lt;code&gt;to&lt;/code&gt; no cabeçalho, é possível observar algo um pouco diferente olha só:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;%= h.changeCase.param(name) %&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;E esse &lt;code&gt;h&lt;/code&gt; é uma abreviação para &lt;code&gt;helper&lt;/code&gt; ou em bom e claro portugues um "ajudante" que geralmente aparecem pra fazer algumas coisas e que &lt;del&gt;não sabemos onde enfiar e&lt;/del&gt; são utilizados em milhões de lugares no nosso código.&lt;/p&gt;

&lt;p&gt;E esse &lt;code&gt;helper&lt;/code&gt; possui uma função chamada &lt;code&gt;changeCase&lt;/code&gt; que facilita pra gente a conversão de strings de uma forma bem fácil! nesse caso está sendo utilizado o &lt;code&gt;param case&lt;/code&gt;, que nada mais é que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a transformação do texto todo para &lt;code&gt;minusculo&lt;/code&gt; +  substituição de todos espaços por &lt;code&gt;-&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por exemplo, se o input da variável &lt;code&gt;name&lt;/code&gt; presente no &lt;code&gt;prompt.js&lt;/code&gt; fosse &lt;code&gt;FooTEr ComPoNeNt&lt;/code&gt;, o resultado dessa transformação utilizando o &lt;code&gt;h.changeCase.param("FooTEr ComPoNeNt")&lt;/code&gt; será &lt;code&gt;footer-component&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Um detalhe legal, esses helpers podem ser usados em qualquer parte (cabeçalho ou corpo) dos templates.&lt;/p&gt;

&lt;p&gt;Você pode conhecer todos as funções do change case helper &lt;a href="https://www.hygen.io/docs/templates/#change-case-helpers" rel="noopener noreferrer"&gt;aqui nesse link&lt;/a&gt; da documentação do hygen!&lt;/p&gt;

&lt;h3&gt;
  
  
  vamos testar então
&lt;/h3&gt;

&lt;p&gt;Para testar, basta você digitar no terminal na pasta principal do seu projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx hygen component new
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;nesse comando acima, temos uma separação relacionando qual o generator e qual a ação será utilizada, lembrando da separação de pastas do &lt;code&gt;_templates&lt;/code&gt;... se liga:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;_templates/
└── component // ISSO é o GENERATOR
    └── new   // ISSO é a ACTION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então vamos executar esse comando, para utilizar o gerador &lt;code&gt;component&lt;/code&gt; e utilizar sua ação de &lt;code&gt;new&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ao executar isso deveria acontecer:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmytirf4029a52m3urr1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmytirf4029a52m3urr1w.png" alt=" " width="397" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sua linha de comando está solicitando uma entrada de texto do usuário, lhe perguntando exatamente o que está no &lt;code&gt;prompt.js&lt;/code&gt;. Nice!&lt;/p&gt;

&lt;p&gt;Vamos colocar um &lt;code&gt;FOOTER&lt;/code&gt; por exemplo, inclusive pode colocar TUDO MAIUSCULO mesmo pra ver se os helpers estão funcionando! hehe.&lt;/p&gt;

&lt;p&gt;Ao pressionar um "enter" para confirmar seu input, seu terminal deveria exibir algo parecido com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9ah9ymtizdcpi2fk71u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9ah9ymtizdcpi2fk71u.png" alt=" " width="545" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exatamente falando as ações que foram realizadas, nesse contexto ele apenas criou um arquivo, seguindo os os paramêtros definidos no arquivo de template.&lt;/p&gt;

&lt;p&gt;Nice! Vamos dar uma olhadinha no arquivo gerado!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fychpcrhobtk9d427r6la.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fychpcrhobtk9d427r6la.png" alt=" " width="635" height="316"&gt;&lt;/a&gt;&lt;br&gt;
Obs: o "sublinhado" de erro é por conta da falta do import do &lt;code&gt;react&lt;/code&gt; nesse template :)&lt;/p&gt;

&lt;p&gt;Mas olha só! se não é um Component já criado com alguns padrões bem simples, no caso, para compreender melhor, faça a comparação entre o template e esse arquivo gerado.&lt;/p&gt;

&lt;p&gt;Vou facilitar e deixar o print do template aqui!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj3tlmh9mnihy6n7alpc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj3tlmh9mnihy6n7alpc.png" alt=" " width="762" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E pronto! Agora, seguindo esses mesmos conceitos, basta adicionar mais arquivos &lt;code&gt;.ejs.t&lt;/code&gt; dentro da pasta &lt;code&gt;new&lt;/code&gt; ou, até mesmo criar outra "ação" e ir personalizando como quiser.&lt;/p&gt;

&lt;p&gt;Vou deixar aqui agora um exemplo um pouco mais "completo", nesse link aqui do meu github:&lt;br&gt;
&lt;a href="https://github.com/MatheusHAS/code-generator/tree/main/examples/react-typescript" rel="noopener noreferrer"&gt;https://github.com/MatheusHAS/code-generator/tree/main/examples/react-typescript&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nesse exemplo foi apenas um &lt;code&gt;Componente&lt;/code&gt;, mas imagina que isso pode ser usado para criar &lt;code&gt;Slices&lt;/code&gt; dos seus &lt;code&gt;stores&lt;/code&gt;, adicionar já padronizações e criação de arquivos relacionados a &lt;code&gt;i18n&lt;/code&gt; e por ai vai!&lt;/p&gt;

&lt;p&gt;Ah, o &lt;code&gt;hygen&lt;/code&gt; não é o único que faz isso, existem outros que fazem tão bem quanto, no caso o hygen tem me servido pela facilidade, mas dependendo do seu contexto de aplicação pode mudar um pouco, então vou deixar aqui um &lt;a href="https://npmtrends.com/hygen-vs-plop-vs-slush-vs-yeoman-generator" rel="noopener noreferrer"&gt;link do NPM trends&lt;/a&gt; com 4 camaradas que podem te ajudar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hygen.io/" rel="noopener noreferrer"&gt;Hygen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plopjs.com/" rel="noopener noreferrer"&gt;Plop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slushjs.github.io/#/" rel="noopener noreferrer"&gt;Slush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yeoman.io/" rel="noopener noreferrer"&gt;Yeoman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Espero que esse conteudo tenha sido útil de alguma forma! :)&lt;/p&gt;




&lt;p&gt;Esse é um dos meus primeiros posts, então, se viu algo que dá pra melhorar, manda um salve ai! me chama em algum lugar, manda um comentário, um sinal de fumaça ou sei lá! hehe&lt;/p&gt;

&lt;p&gt;Minhas redes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/matheusazambuja/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/matheusazambuja/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Github: &lt;a href="https://github.com/MatheusHAS" rel="noopener noreferrer"&gt;https://github.com/MatheusHAS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;e é isso!&lt;br&gt;
Valeww pessoaR!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
      <category>react</category>
    </item>
  </channel>
</rss>
