<?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: Marcelo Lopes da Silva</title>
    <description>The latest articles on DEV Community by Marcelo Lopes da Silva (@desenvmarcelosilva).</description>
    <link>https://dev.to/desenvmarcelosilva</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%2F106428%2F4259c582-8eb4-4e40-8385-84c5c11b108b.jpg</url>
      <title>DEV Community: Marcelo Lopes da Silva</title>
      <link>https://dev.to/desenvmarcelosilva</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/desenvmarcelosilva"/>
    <language>en</language>
    <item>
      <title>Scripts simultâneos no package.json</title>
      <dc:creator>Marcelo Lopes da Silva</dc:creator>
      <pubDate>Thu, 02 Apr 2020 20:21:29 +0000</pubDate>
      <link>https://dev.to/desenvmarcelosilva/scripts-simultaneos-no-package-json-2mgi</link>
      <guid>https://dev.to/desenvmarcelosilva/scripts-simultaneos-no-package-json-2mgi</guid>
      <description>&lt;h1&gt;
  
  
  Objetivo
&lt;/h1&gt;

&lt;p&gt;O objetivo desse &lt;em&gt;post&lt;/em&gt; é ajudar quem está iniciando no mundo do desenvolvimento &lt;em&gt;javascript&lt;/em&gt; e é sempre bom conhecer alguns truques que são usados.&lt;/p&gt;

&lt;h1&gt;
  
  
  Motivação
&lt;/h1&gt;

&lt;p&gt;Durante o desenvolvimento de sistemas, sites e apps precisamos usar várias ferramentas no dia a dia. Muitas vezes pra colocar nosso ambiente de desenvolvimento 'de pé' é preciso executar vários &lt;em&gt;scripts&lt;/em&gt;. Pode ser um fake-server, uma transpilação ou iniciar o emulador do Android etc.&lt;/p&gt;

&lt;p&gt;Com esse cenário e como pra esse mundo &lt;em&gt;javascript&lt;/em&gt; usamos bastante o arquivo &lt;strong&gt;package.json&lt;/strong&gt; eu vou deixar uma dica que me ajudou e pode dar uma mãozinha pra quem estiver com a mesma dificuldade. Ou só quer parar de ficar abrindo vários Terminais e rodando comandos na sequência.&lt;/p&gt;

&lt;h1&gt;
  
  
  Inspiração
&lt;/h1&gt;

&lt;p&gt;Esse é meu primeiro post e foi inspirado pelo pessoal da Rocketseat. Esse assunto específicamente não é algo que eu tenha visto por lá. Pro conteúdo que eu aprendi com eles eu ainda irei escrever muuuuiiito no futuro hahaha.. Mas, fica o registro de que a participação no curso e o incentivo do pessoal fez com que eu saísse das sombras e viesse escrever um pouco sobre javascript hahaha... Valeu Diego!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferramentas
&lt;/h2&gt;

&lt;p&gt;As ferramentas que vou utilizar aqui são o &lt;em&gt;yarn&lt;/em&gt;, &lt;em&gt;typescript&lt;/em&gt; e o &lt;em&gt;node&lt;/em&gt;. Eu sempre uso o &lt;em&gt;yarn&lt;/em&gt; e então, vou seguir o post com ele mas você pode usar o &lt;em&gt;npm&lt;/em&gt; se preferir.&lt;/p&gt;

&lt;h3&gt;
  
  
  O package.json
&lt;/h3&gt;

&lt;p&gt;Esse arquivo normalmente tem tudo sobre o projeto. Nome, versão dos pacotes, pacotes de dev, &lt;em&gt;scripts&lt;/em&gt;. Tudo. Normalmente, quando iniciamos nossa aplicação &lt;em&gt;node&lt;/em&gt;, &lt;em&gt;typescript&lt;/em&gt; ou &lt;em&gt;react&lt;/em&gt;, esse arquivo vai estar na pasta. Para este &lt;em&gt;post&lt;/em&gt; vamos começar do zero apenas para fins didáticos. &lt;/p&gt;

&lt;p&gt;Pra isso crie uma pasta qualquer, acesse e depois rode o comando. Como faço abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir concurrent_script

cd ./concurrent_script

yarn init -y

ls

package.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Desenvolvendo
&lt;/h3&gt;

&lt;p&gt;Vamos criar um arquivo chamado &lt;em&gt;index.ts&lt;/em&gt; para executarmos nossos &lt;em&gt;scripts&lt;/em&gt; concorrentes.&lt;/p&gt;

&lt;p&gt;Edite o arquivo e dentro dele apenas coloque um &lt;em&gt;console.log&lt;/em&gt; como abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello Typescript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Bom, normalmente então, pra utilizar esse &lt;em&gt;script&lt;/em&gt; no &lt;em&gt;node&lt;/em&gt;, vamos gerar o &lt;em&gt;javascript&lt;/em&gt; através do comando &lt;em&gt;tsc&lt;/em&gt; do &lt;em&gt;typescript&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tsc index.ts

ls

index.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Acima o que foi feito foi executar o &lt;em&gt;typescript&lt;/em&gt;, o comando para listar conteúdo da pasta e o arquivo resultante &lt;em&gt;index.js&lt;/em&gt; foi mostrado.&lt;/p&gt;

&lt;p&gt;Agora para executar o que queremos, que é ver o código rodando no &lt;em&gt;node&lt;/em&gt;, precisamos chamar o &lt;em&gt;node&lt;/em&gt;, claro! ó Mds...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;node&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Então o trabalho é, codar dentro usando &lt;em&gt;typescript&lt;/em&gt;, salvar, fechar e rodar o &lt;em&gt;typescript&lt;/em&gt; no arquivo ou arquivos e depois rodar o &lt;em&gt;node&lt;/em&gt; para executar e ver o resultado.&lt;/p&gt;

&lt;p&gt;Hummm!! Acho que não é muito bom isso...&lt;/p&gt;

&lt;p&gt;Isso significa que toda vez então, vamos manter esse ciclo pra poder trabalhar. Muito ruim...&lt;/p&gt;

&lt;h3&gt;
  
  
  Solução
&lt;/h3&gt;

&lt;p&gt;Pra resolver esse ciclo ai de transpilar, rodar &lt;em&gt;node&lt;/em&gt;, transpilar, rodar &lt;em&gt;node&lt;/em&gt; nós vamos utilizar o &lt;strong&gt;concurrently&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Vamos então instalar o pacote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;yarn&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt; &lt;span class="nx"&gt;concurrently&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Agora vamos editar o &lt;em&gt;package.json&lt;/em&gt;. Abra o &lt;em&gt;package.json&lt;/em&gt; no seu editor favorito ou no &lt;em&gt;VSCode&lt;/em&gt; como eu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code .
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Logo após o "license" coloque uma vírgula e acrescente a área de &lt;em&gt;scripts&lt;/em&gt;, como abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;start:build&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tsc index.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;start:run&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;start&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;concurrently yarn:start:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Pronto, agora salve o arquivo e volte para o terminal. &lt;/p&gt;

&lt;p&gt;Dentro da pasta, basta digitar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;E você verá que os dois &lt;em&gt;scripts&lt;/em&gt; serão executados com apenas um comando.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;Temos o &lt;strong&gt;ts-node&lt;/strong&gt; que faz isso pra gente mas mostrar que podemos criar alguns &lt;em&gt;scripts&lt;/em&gt; para executar simultâneamente também é bem legal e útil. Lógico que eu recomendo utilizar o &lt;em&gt;ts-node&lt;/em&gt; mas fica a dica do &lt;strong&gt;concurrently&lt;/strong&gt; que você pode utilizar para qualquer coisa. &lt;/p&gt;

&lt;p&gt;Se tiver alguma sugestão, correção ou apenas curiosidade sobre javascript e o seu ecosistema, daquilo que eu conheço, pode comentar ai que eu respondo!&lt;/p&gt;

&lt;p&gt;Espero ter contribuido, um grande abraço!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>node</category>
      <category>react</category>
    </item>
  </channel>
</rss>
