{"componentChunkName":"component---src-templates-blog-post-js","path":"/como-criar-extensao-no-vscode/","result":{"data":{"markdownRemark":{"fields":{"slug":"/como-criar-extensao-no-vscode/"},"frontmatter":{"titulo":"Como criar extensão no vscode","data":"16/10/2020","tag":"Programação","image":{"childImageSharp":{"fluid":{"src":"/static/5903cdf2d296c690fc86c2a9fba4706b/3ee52/group-1-1-.png","base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlklEQVQoz41SzS4DURhtJP72dN2auXfm3jt+U22n/6lGEIQqHSqDaCISiViVjScQYSmxEo9g6SFYeADxIMc3dyiKsDj57l/Od853T0RKiQBCVwEhCFJpSFrru7f6EzrvIppIk8g3KChmQHIW7n8hVb+QtgmVxcKHLA6zuADhliAt3iZVSsGyLFi2rWGYJhhj3xpG3tUZ6TIcbiA6vY3es0dYVw8QoxPUzAYjonRiEjv1DfirdTSqNRw29+DXPTiO06mQLBLRYOMUPcd36Nu6RGy9BXbzApHIQJD14ZEROKSwkMmilM2hSHWmXNF7xjlsUvyuMiS0TERn99F1co/+g1sM1Y5gXD9DEqE5FMNcZRrNTR8r84vw1zz4tTq85RV4S1Xseg1kXRecxhMq1HIF4skpPbOBagvd5y8wLp4gxhKw6Wx8bBy5tAs3maKa0etiLo8Cqc2m0hglB3bnDPWn0LyUGUO80oCdn9MNgkeBJU7WOM0yrFxbDRDsbfHF8k+xiVNsjC+x+Qsfv/w52G3ij2CLduj/h1ch8D5B649nwAAAAABJRU5ErkJggg==","aspectRatio":1.9565217391304348,"srcSet":"/static/5903cdf2d296c690fc86c2a9fba4706b/7e7e9/group-1-1-.png 225w,\n/static/5903cdf2d296c690fc86c2a9fba4706b/62b1f/group-1-1-.png 450w,\n/static/5903cdf2d296c690fc86c2a9fba4706b/3ee52/group-1-1-.png 704w","sizes":"(max-width: 704px) 100vw, 704px"}}}},"html":"<p>Falaaaa jovem!</p>\n<p>Estou sumidinha um tempo, mas to voltando aqui hoje para compartilhar uma coisa com você que eu aprendi na última semana. Como criar e publicar uma extensão no vscode!</p>\n<p>Nesses últimos dias decidi me aventurar e vou te contar o que aprendi e como você pode criar sua própria extensão.</p>\n<p><img src=\"https://media.giphy.com/media/1YuBJLQooc6NFmn3N5/giphy.gif\" alt=\"https://media.giphy.com/media/1YuBJLQooc6NFmn3N5/giphy.gif\"></p>\n<h3>Por que uma extensão no vscode?</h3>\n<p>No <a href=\"https://marketplace.visualstudio.com/\">marketplace</a> da microsoft você encontra milhares de extensões que tem o principal objetivo ajudar e melhorar a sua produtividade enquanto você codifica.</p>\n<p>Em uma certa situação no trabalho precisei criar uma extensão que gerasse alguns arquivos em automático para que aumentasse a produtividade do time de desenvolvimento.</p>\n<p>Algo simples e objetivo, traz benefícios como:</p>\n<ul>\n<li>Time todo alinhado com a estrutura do projeto.</li>\n<li>Incentiva de criação de testes (já que a extensão cria automático o arquivo de teste e um teste bem simples).</li>\n<li>Aumenta a produtividade, agora não e necessário perder tempo criando todo a estrutura do 0 .</li>\n</ul>\n<p><img src=\"https://media.giphy.com/media/uj8oO4Lreq4fTE61ku/giphy.gif\" alt=\"https://media.giphy.com/media/uj8oO4Lreq4fTE61ku/giphy.gif\"></p>\n<h3>Começando...</h3>\n<p>Bom vamos criar uma extensão que gere um arquivo index, testes e estilos(com styled components). Vou utilizar como base o projeto que desenvolvi sobre testes no react, você pode ler o artigo completo de <a href=\"https://lorenakauane.com.br/blog/pt/2020-05-22-como-criar-testes-no-front-end-em-reactjs/\">Como criar testes no front-end em ReactJs</a>.</p>\n<p>Mas antes de criar sua extensão você precisa estar com <strong>vscode , node, git</strong> e ter um projeto <strong>react rodando com styled components</strong>. Na <a href=\"https://code.visualstudio.com/api\">documentação do vscode</a> você tem algumas funções detalhadas caso precise se informar de alguma função especifica.</p>\n<p>Nossa extensão vai gerar os seguintes códigos automáticos:</p>\n<p><code class=\"language-text\">index.js</code></p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Container <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"./styled\"</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token keyword\">function</span> <span class=\"token function\">NameComponent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Container</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>strong</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello stranger, NameComponent!</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>strong</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">Container</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p><code class=\"language-text\">styled.js</code></p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> styled <span class=\"token keyword\">from</span> <span class=\"token string\">\"styled-components\"</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">const</span> Container <span class=\"token operator\">=</span> styled<span class=\"token punctuation\">.</span>div<span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">\n  text-align: center;\n</span><span class=\"token template-punctuation string\">`</span></span></code></pre></div>\n<p><code class=\"language-text\">test.js</code></p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">\"react\"</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> mount <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"enzyme\"</span>\n<span class=\"token keyword\">import</span> NameComponent <span class=\"token keyword\">from</span> <span class=\"token string\">\"./\"</span>\n\n<span class=\"token function\">it</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Should mount component\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> wrap <span class=\"token operator\">=</span> <span class=\"token function\">mount</span><span class=\"token punctuation\">(</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">NameComponent</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">)</span>\n  <span class=\"token function\">expect</span><span class=\"token punctuation\">(</span>wrap<span class=\"token punctuation\">.</span><span class=\"token function\">find</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"strong\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">at</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">text</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toEqual</span><span class=\"token punctuation\">(</span>\n    <span class=\"token string\">\"Hello stranger, NameComponent!\"</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p><strong>Uma observação importante!</strong></p>\n<p>O nome <strong>NameComponent</strong>, vai ser de fato o nome do componente que você quer gerar!</p>\n<p>Com vscode aberto você vai precisar instalar o <a href=\"https://yeoman.io/\">Yeoman</a> um gerador de projetos.</p>\n<p><code class=\"language-text\">npm install -g yo generator-code</code></p>\n<p>Quando tiver instalado rode o seguinte comando:</p>\n<p><code class=\"language-text\">yo code</code></p>\n<p>E você vai ter uma visão parecida com essa:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 656px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 70%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsSAAALEgHS3X78AAABpUlEQVQoz31Si3LaMBD0BzEl7lCKY+t9eoMd+RFwoeT//6KnAKW0TXY8J1ujvdtdq3haluXy6/LL02ZdSaGUBFBaCqmklILXzxXnnFFKCRGc4c7623qxWJRlWTXrAiK1XX5g28hQ6R3NNVABRvu2EWbTsIqIZ6qw1iT3YZStVqvvm03BVAOBg+fSUhuli+B2YIMy1hkXrd8qbSUYmasFbbXWoDW2iDEW2EijWsIBNGru+2EaX19e0jD00zSG4AXnhBDUTf8A7njvC8qYVcJJhl4BwFo7TdM8/xjHIYTgnEPvWeojrmQ04ZwOwbxnhcNzC4RSOTKsObB/cCUT0khOQRDBWHNHXdcNnsDlXfMdD2QcFpwPFvMxwWed1hifEYxGRRE/pbyIAFweyLZP6ee5Ox7jNKXTKZ3P7X6/y2ixUdt23rvMQ0ta48tl+JWMhw7z/Lrfz/Oc+t4Hj6dIRpaNBj6TjSOOp4zD4TCO4+XH/A7mv2ndyW3bvp0Rb33fd12nbviI9ujZOuQMw5BSQhV4b+I2A272PiLjLSgulsgNf3n7hIxx/gLGlt0tZrMiVwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"Yo picture image\"\n        title=\"Yo picture image\"\n        data-src=\"/static/94d6028b0b827fd93b1dce51cdc8b514/748f4/yocode.png\"\n        data-srcset=\"/static/94d6028b0b827fd93b1dce51cdc8b514/8ff5a/yocode.png 240w,\n/static/94d6028b0b827fd93b1dce51cdc8b514/e85cb/yocode.png 480w,\n/static/94d6028b0b827fd93b1dce51cdc8b514/748f4/yocode.png 656w\"\n        sizes=\"(max-width: 656px) 100vw, 656px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 960px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 55.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsSAAALEgHS3X78AAABHklEQVQoz41S2XKDMAzks5K2+MJngBgC8QHYkP//iWpI2keSHY/Hkma91soFo4RTKoTo+77rOmstYwwhhD9AUTGqRFVVvK7r6/WqtKKU4s9QMEZERQgmoAWCBGP2R0aQPibHGOYY07LEGHNKN+dw2560/lLqh/OSsUPyts3bA9a0riGn0XtpbWn0N+eIMiAf6Be96/KWtu2Rcm6H4QKdN40SAn/gWYHlafRdTjmEEENY5mWe5rpu2OGDX2Qiz4Ozy5x88NM05ZyNNmA4eefWTlbne+xzXuNu27qubdsKKWF6b6ddIHG2Q+Odvw3jON6dc8bosiyhBjt64f+AnskXWUkF0FrVF2I0E3yPIaPUBa7RGj4fhFJKvcMYA8VnU7+5yrLOa+Ll6wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"instalado\"\n        title=\"instalado\"\n        data-src=\"/static/6c15489ede14c426a444f51fa25c910e/d9199/instalado.png\"\n        data-srcset=\"/static/6c15489ede14c426a444f51fa25c910e/8ff5a/instalado.png 240w,\n/static/6c15489ede14c426a444f51fa25c910e/e85cb/instalado.png 480w,\n/static/6c15489ede14c426a444f51fa25c910e/d9199/instalado.png 960w,\n/static/6c15489ede14c426a444f51fa25c910e/b94e3/instalado.png 1126w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Depois e só acessar o seu projeto que você acabou de criar. E temos a seguinte estrutura de projeto.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 295px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 160.83333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAIAAACdAM/hAAAACXBIWXMAAAsSAAALEgHS3X78AAAD9UlEQVQ4y31VyW4bRxDlN+QagOTsva+zcxaSoiLHsC1LMrULdnKwD0F88CEfkE8IkP9N9QwVWRJloFiYaUzVq3r1qjnxY+7FjAiLmMHcUpmGiM9D4kX0JQsSDt/AwwR+EdGbo9ft8nC5eX346g3heuqjlyIhb4hlQpUXkkmEFWTyIuZKiJgXQVYRJAJ8iOQTD+dg8CUYPEyoLIrFwfnVx4vrT8dnV6cfrk62t9d3v9XtOkQqoXa0mBjwiKX3loGfYJ4xVeT1Oi1XabXMyl6nTV6vdLoQph5NmlqlDdfl4/h0wnWV1evt5d37t8cfzm/Otrfv3p9vLz6eX96dbq9Pz29PtjcXN5+2F7e26AB/DEuIyzKBTiIkYp6rd1+wWYRUIJ3iNHOUOCKcwTiAKngAdkaLpQmQmEDrYcJiWdWf/7Wrt6i2fLnQR33IxNRDswCDPec8VgZyTVy+WBAp39zkOs8JS5UpE6y4KoQtla24yvbMbBDCLhhJ8fu302a5QlhrWzKdCVNKW+p0f/Coogn0E0Hltvzp6x9R28llnaR25uNZiMeap8/LjilOUz9xZfMAiCESnZyhrILTRNt5gOchnQfkJZ0Cr5BiAtTNQ8jNs/JzRCvWluZVL9eN6Bdq0/G28kL6HJmUhUMetOmONMvCRCTWojSNpQafKBNgvhc54gr6HZCB+ph+4T9LQsTh0h71YtmI5SIWajpDeyoH5Dwfet4hE78+9nWbSJGYFOdZog0YMjZkch49jY+Edsi74JBM21vPrmmZsqYWq0auWwBniypWejpHgPZ9MBrZHgiDFWW2wYlktK54W7NFSauKljkQg7MMXh/RFj8KpgFittdIK2QzqJlWBSkKiKR1SYqc5E91Aoz6I2HTgFJG//kraVqJ20a0FalL0desLoFVqBk085SwIt8hz0IaY7ruCAW2ADlz4Mim8ACEO7aGrXpM2P2oZgHFlPYFtoXiBx1g6qOlOmhBJKTMnc4C8iLysKsUVBJzAbsG/TiRZE4k8AqjipiCT/eLBJiE4PxQkdyoTS+Xjf11xfsFayp50AG+PmhBzN+rBfp6hGw6AJSJsSAM6BZZ63SitFvAgLzI9hisK4StkuuOtbU+7HhXg0iBcD/eo+2HOXsh9rFml3+jaiO6EqqFSNnXsJ60LhzVEL/z9/uc/V92SHwk2fGfkWlwZiArGERC/dDFzMNgc5+4G8JDYwsPo3LB8Beh+0hmsMCgLblqgDAoG6Tqqli36hdY8lZvOmQMrAMd93lYDCcDHxsfw0pZNyczsAVeaZiW23A1vBobMRkg7vY8dhcgf7gQQzL3sbuDnCc7H9wfuvNBMOHD7cl/8G/6Y/sPnBBT7GdhrVIAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"estrutura yo\"\n        title=\"estrutura yo\"\n        data-src=\"/static/a4c7b59d2105ca6f977c71266a22d8b5/e4a3f/estrutura.png\"\n        data-srcset=\"/static/a4c7b59d2105ca6f977c71266a22d8b5/8ff5a/estrutura.png 240w,\n/static/a4c7b59d2105ca6f977c71266a22d8b5/e4a3f/estrutura.png 295w\"\n        sizes=\"(max-width: 295px) 100vw, 295px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>O arquivo extension.js e onde a magica acontece!</p>\n<p>Bom vamos ver a mágica acontecendo!</p>\n<p>Aperte F5 que isso irá executar sua aplicação de modo debug e irá abrir um host de desenvolvimento da extensão.</p>\n<p>E execute o Hello Wold na paleta de comandos</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 960px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 53.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAABfklEQVQoz31SV3LDIBTUMTKTSRxbBSHTRBFyUdpHLpDc/yqbB7blEk8+Vot48NhlKcKwQW8DlO4zjCFWKo+dD7AuwWcOQ4QPQ4ZUGkJeI+0p+rDHdvrEsHkHEw4N1+j9CGU3qFqNmpsZVWvyXMUtajkS91e1prMoWkGnbSdIO2LVCCwJbO3Riv8QjvhbK7gaIcm2dBGrWmDFUkOX0Yp7oI2pdlxziVQvUsHGCW7zerDYmWw9bTwsulXh7io7rS3SR1uLPoxYlDzbvt+INt1gnpsVUsOmc3BOUyhTVvhSr8FoLs1fMqMLv8L6wC3x1R2WlI61Gvv9jhJWKEmh9vSU4haG7tYQOzpMhjfwfgdud5k7YuEnMB2zOmFiRpFjlx6qDyjrDhUpTGMTIqSPUH6AsJEaTeBuOnDGfsYcVFLYqYFsGSwp4Ucm8UAHPMkBL+tAis+W22Tv1vZs/5R0bhjgKWVG/LHi+Hku8b2o8EUBMVLedOnxnpH+0yvIuPN0fgH/wVHdEj3x/QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"MOstra no comand pallete\"\n        title=\"MOstra no comand pallete\"\n        data-src=\"/static/96bca8cc2b55d74ee4ad634a3fd80d05/d9199/helloworld.png\"\n        data-srcset=\"/static/96bca8cc2b55d74ee4ad634a3fd80d05/8ff5a/helloworld.png 240w,\n/static/96bca8cc2b55d74ee4ad634a3fd80d05/e85cb/helloworld.png 480w,\n/static/96bca8cc2b55d74ee4ad634a3fd80d05/d9199/helloworld.png 960w,\n/static/96bca8cc2b55d74ee4ad634a3fd80d05/07a9c/helloworld.png 1440w,\n/static/96bca8cc2b55d74ee4ad634a3fd80d05/1e2b7/helloworld.png 1483w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Logo na lateral vai mostrar uma mensagem de Hello world!</p>\n<p>Showwww de bolaa,</p>\n<p>Agora vamos adicionar um item no menu quando apertamos botão direito do mouse em qualquer packege.</p>\n<p>Para isso você precisa abrir o packege.json, lá e onde você configura todos os parâmetros, comandos de como sua extensão vai ser chamada, pode ser por linha de comando, Menus entre outros, <a href=\"https://code.visualstudio.com/api/references/contribution-points\">aqui</a> você consegue ver a lista completinha.</p>\n<p>Vamos adicionar no nosso packege.json o seguinte código:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\">...\n<span class=\"token property\">\"activationEvents\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n\t<span class=\"token string\">\"onCommand:extension.gerador-arquivos-react\"</span>\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n<span class=\"token property\">\"main\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./extension.js\"</span><span class=\"token punctuation\">,</span>\n<span class=\"token property\">\"contributes\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token property\">\"commands\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n\t\t\t<span class=\"token punctuation\">{</span>\n\t\t\t\t<span class=\"token property\">\"command\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n\t\t\t\t<span class=\"token property\">\"title\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Gerador de arquivos React\"</span>\n\t\t\t<span class=\"token punctuation\">}</span>\n\t\t<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n\t\t<span class=\"token property\">\"menus\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"explorer/context\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n              <span class=\"token punctuation\">{</span>\n                  <span class=\"token property\">\"when\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"true\"</span><span class=\"token punctuation\">,</span>\n                  <span class=\"token property\">\"command\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n                  <span class=\"token property\">\"group\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"navigation\"</span>\n              <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"commandPalette\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n              <span class=\"token punctuation\">{</span>\n                  <span class=\"token property\">\"command\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n                  <span class=\"token property\">\"when\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"editorHasSelection\"</span>\n              <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n      <span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n...</code></pre></div>\n<p>E no arquivo <code class=\"language-text\">extension.js</code> vamos realizar as seguintes alterações:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">const</span> vscode <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"vscode\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">activate</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">context</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>\n    <span class=\"token string\">'Congratulations, your extension \"gerador-arquivos-react\" is now active!'</span>\n  <span class=\"token punctuation\">)</span>\n  <span class=\"token keyword\">let</span> disposable <span class=\"token operator\">=</span> vscode<span class=\"token punctuation\">.</span>commands<span class=\"token punctuation\">.</span><span class=\"token function\">registerCommand</span><span class=\"token punctuation\">(</span>\n    <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      vscode<span class=\"token punctuation\">.</span>window<span class=\"token punctuation\">.</span><span class=\"token function\">showInformationMessage</span><span class=\"token punctuation\">(</span>\n        <span class=\"token string\">\"Hello World from gerador-arquivos-react!\"</span>\n      <span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">)</span>\n\n  context<span class=\"token punctuation\">.</span>subscriptions<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>disposable<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\nexports<span class=\"token punctuation\">.</span>activate <span class=\"token operator\">=</span> activate\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">deactivate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\nmodule<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  activate<span class=\"token punctuation\">,</span>\n  deactivate<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>E você vai ter uma visão semelhante a essa:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 496px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 122.49999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsSAAALEgHS3X78AAADg0lEQVQ4y21U2ZKjOBD0d+zGTndjGzCHxCUJIQ6BOHxgu2ePl4nYh/3/n9gET09372xFhQNkpTIrq8TGpyIVjRsy3Z/O99dunKfza3+8XW5/ZXm9cyM3SBz/kakbZB4VXshrPlf8sjmEDLm1yd73zR9dwlTCiijNmazdIH7eeS97f01v59IFTMQhYIQqSssNmMNY7uzQCpgz/8NlLVRj2cHWCd9gH8EMYJ+IIpuUOG5oqmJWgdkmEZvrJCuw9YvlIj/QvjP7ND8QdiDcj8XGDZZKti7dbb3n63lfNRHlsjKQ4HjRz7JR4+MIn+QbkhQwbOeSp31wUnJou6IZvDC1nND2op+ZH2QuzPPTDQoO42Jrh7+9OIrL6XRNRJmJCp5tneBpewA5Eg8gQM0r/ntuVg2CpFUqOtle2vlbf/q9HW+iHGLeYJ1kS9KsDmLprt16Bye8zkvjLXiVCP33t1F3pjVDZyYzHIfxNEyn5Xc85VKlKcsyjmQZD+nKDDGQ/WS5T1tvbOwoIm3bvt7v0zRqrTu86KbVWsp8zSWKQtI4W2rOcm178ZIHOnVhxljXmcvlcjqdCimzFAuMc56vwdfIhVjAQZTDbdtLHS/ek/LPr1II1rZmvlzO5zPwvTGQoJQCpiiKcRjGcTSmI1G6wcQid4fo6cUJi5YWI+cSSq/X6/F4vN/vt+vter1BSFmWYK6ruiyrUqmF+VHz/kB/efZv/d7oBONd19Uw9KbrQFPX2F2ieJADjOeqqtQnsEu/WB7nYa6UkDi5hDxE3/co71EnFxxIyDlOk26aRfYDjKv3bDlWOlA1iVyCDcfDJyFE/iHEGsb0aMA7GLJ/ffbn3u07nvKqazWsyv8vIBhOwsVPYNT89XgwbUYTMFfGGOjEbvT2E3met7pt6or8x7B5OnSaRWmhVKGxo2k4+gbxbx2G5maNqiq/G4YvA66ktfP62BFSMaHQqvv9FQF5Le5ZgeaLqqxMb+Z5Rv/6/k32AnboDoOSEF60eQFTy34Js0RvHmB0eD1LYw11vbcKd/XF9nzmCaWZkOjq7XbTjV4HU/ywGsqxgtn+4HbIdg6xXELMDMlMoGCN6cT4Z7hBK+CtZRJnNY2exjGkyTv4xaG2eg2TPMnwdz1OE2YMU41pecw2XH/kowXRR9nLF8Oyly8GZj1luSy5wE4lclwtRaOE0JjG6Y/0SfIvIdI7fPTi2kIAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"menu vscode\"\n        title=\"menu vscode\"\n        data-src=\"/static/4069a7f85644e3eb9e1d813892d596c2/bb630/geradormenu.png\"\n        data-srcset=\"/static/4069a7f85644e3eb9e1d813892d596c2/8ff5a/geradormenu.png 240w,\n/static/4069a7f85644e3eb9e1d813892d596c2/e85cb/geradormenu.png 480w,\n/static/4069a7f85644e3eb9e1d813892d596c2/bb630/geradormenu.png 496w\"\n        sizes=\"(max-width: 496px) 100vw, 496px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Show!</p>\n<p>Agora vamos criar uma pasta chamada templates e vamos adicionar os arquivos de index, styled e test!</p>\n<p>Index:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">module<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">exports</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span>\n  <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">import styled from 'styled-components'\n\nexport const Container = styled.div</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token string\">\"`\"</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">\n    text-align: center;\n</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token string\">\"`\"</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">\n</span><span class=\"token template-punctuation string\">`</span></span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">module<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">exports</span> <span class=\"token operator\">=</span> <span class=\"token parameter\">nameComponent</span> <span class=\"token operator\">=></span>\n  <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">import React from \"react\";\nimport { Container } from \"./styled\"\n\nexport default function </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameComponent<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">() {\n  return (\n    &lt;Container>\n      &lt;strong>Hello stranger, </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameComponent<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">!&lt;/strong>\n    &lt;/Container>\n  );\n}\n</span><span class=\"token template-punctuation string\">`</span></span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">module<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">exports</span> <span class=\"token operator\">=</span> <span class=\"token parameter\">nameComponent</span> <span class=\"token operator\">=></span>\n  <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">import React from \"react\";\nimport { mount } from \"enzyme\";\nimport </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameComponent<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> from \"./\";\n\nit(\"Should mount component\", () => {\n    const wrap = mount(&lt;</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameComponent<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> />);\n    expect(wrap.find(\"strong\").at(0).text()).toEqual(\"Hello stranger, </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameComponent<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">!\");\n});\n</span><span class=\"token template-punctuation string\">`</span></span></code></pre></div>\n<p>Arquivos criados!</p>\n<p>Agora vamos, capturar o caminho de onde vai ser gerado o arquivo e pegar o nome da pasta</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">let</span> disposable <span class=\"token operator\">=</span> vscode<span class=\"token punctuation\">.</span>commands<span class=\"token punctuation\">.</span><span class=\"token function\">registerCommand</span><span class=\"token punctuation\">(</span>\n  <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">e</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> filePath <span class=\"token operator\">=</span> e<span class=\"token punctuation\">.</span>path <span class=\"token comment\">// getFilePath</span>\n    <span class=\"token keyword\">const</span> nameFolder <span class=\"token operator\">=</span> filePath<span class=\"token punctuation\">.</span><span class=\"token function\">substring</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">.</span><span class=\"token function\">lastIndexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">//GetNameFolder</span>\n    vscode<span class=\"token punctuation\">.</span>window<span class=\"token punctuation\">.</span><span class=\"token function\">showInformationMessage</span><span class=\"token punctuation\">(</span>\n      <span class=\"token string\">\"Hello World from gerador-arquivos-react!\"</span>\n    <span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Agora vamos importar os arquivos gerados na pasta template e montar um <a href=\"https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Map\">Map</a> de chave e valor e finalmente gerar nossos arquivos.</p>\n<p>O arquivo final fica dessa maneira:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">const</span> vscode <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"vscode\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">const</span> fs <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"fs\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">const</span> path <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"path\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">const</span> templateStyled <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"./templates/styled\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">const</span> templateIndex <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"./templates\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">const</span> templateTest <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"./templates/test\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">activate</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">context</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">let</span> disposable <span class=\"token operator\">=</span> vscode<span class=\"token punctuation\">.</span>commands<span class=\"token punctuation\">.</span><span class=\"token function\">registerCommand</span><span class=\"token punctuation\">(</span>\n    <span class=\"token string\">\"extension.gerador-arquivos-react\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">e</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">const</span> filePath <span class=\"token operator\">=</span> e<span class=\"token punctuation\">.</span>path\n      <span class=\"token keyword\">const</span> nameFolder <span class=\"token operator\">=</span> filePath<span class=\"token punctuation\">.</span><span class=\"token function\">substring</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">.</span><span class=\"token function\">lastIndexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"/\"</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n      <span class=\"token keyword\">const</span> mockTemplates <span class=\"token operator\">=</span> <span class=\"token function\">setMocks</span><span class=\"token punctuation\">(</span>nameFolder<span class=\"token punctuation\">)</span>\n\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> <span class=\"token punctuation\">[</span>key<span class=\"token punctuation\">,</span> value<span class=\"token punctuation\">]</span> <span class=\"token keyword\">of</span> mockTemplates<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">let</span> objectCreate <span class=\"token operator\">=</span> <span class=\"token function\">value</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">createFile</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">,</span> objectCreate<span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span>\n      vscode<span class=\"token punctuation\">.</span>window<span class=\"token punctuation\">.</span><span class=\"token function\">showInformationMessage</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Done!\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">)</span>\n\n  context<span class=\"token punctuation\">.</span>subscriptions<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>disposable<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">setMocks</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">nameFolder</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">let</span> mockTemplates <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Map</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n  mockTemplates<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Styled\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> fileName <span class=\"token operator\">=</span> <span class=\"token string\">\"styled.js\"</span>\n    <span class=\"token keyword\">const</span> mockFunction <span class=\"token operator\">=</span> <span class=\"token function\">templateStyled</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName<span class=\"token punctuation\">,</span> mockFunction <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n  mockTemplates<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Index\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> fileName <span class=\"token operator\">=</span> <span class=\"token string\">\"index.js\"</span>\n    <span class=\"token keyword\">const</span> mockFunction <span class=\"token operator\">=</span> <span class=\"token function\">templateIndex</span><span class=\"token punctuation\">(</span>nameFolder<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName<span class=\"token punctuation\">,</span> mockFunction <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n  mockTemplates<span class=\"token punctuation\">.</span><span class=\"token function\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Test\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> fileName <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>nameFolder<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">.test.js</span><span class=\"token template-punctuation string\">`</span></span>\n    <span class=\"token keyword\">const</span> mockFunction <span class=\"token operator\">=</span> <span class=\"token function\">templateTest</span><span class=\"token punctuation\">(</span>nameFolder<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName<span class=\"token punctuation\">,</span> mockFunction <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n\n  <span class=\"token keyword\">return</span> mockTemplates\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">createFile</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">pathFile<span class=\"token punctuation\">,</span> objectCreate</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  fs<span class=\"token punctuation\">.</span><span class=\"token function\">writeFile</span><span class=\"token punctuation\">(</span>\n    path<span class=\"token punctuation\">.</span><span class=\"token function\">join</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>pathFile<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">/</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">,</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>objectCreate<span class=\"token punctuation\">.</span>fileName<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    objectCreate<span class=\"token punctuation\">.</span>mockFunction<span class=\"token punctuation\">,</span>\n    <span class=\"token keyword\">async</span> <span class=\"token parameter\">err</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>err<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> vscode<span class=\"token punctuation\">.</span>window<span class=\"token punctuation\">.</span><span class=\"token function\">showErrorMessage</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Opss.. Error\"</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\nexports<span class=\"token punctuation\">.</span>activate <span class=\"token operator\">=</span> activate\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">deactivate</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\nmodule<span class=\"token punctuation\">.</span>exports <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  activate<span class=\"token punctuation\">,</span>\n  deactivate<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>FEITO!</p>\n<p>Agora e só testar, crie uma pasta e execute a extensão você vai ter um resultado semelhante a esse:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 960px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 71.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAIAAACgpqunAAAACXBIWXMAAAsSAAALEgHS3X78AAABOElEQVQoz5WS606EMBCFeRJlufUyvZdSoLCLWXXf/40cQKLxh0ry/WiaOZlzTpvBkGTbV0ReatgQBDwV7e8wGRpuM4iDHhIBc6k5UhDxp/IQu0zZmJZ3KlzRiJLIkqh/i23GpRuuEzWhZgYhwp8QEy66yVXaYeC8ZAWRJ8TKumFaaqrzip8uTDvT9iMBu7eNyU+Ig+MhDsLEojkv5kovy80Yj++U19CwM22XwtvQM/jMjJt/zH0ZkWFFBLKdV/Gl4k8lO9paC+MygOq46kBFrqKyIyi8CUz4hlkKXpoeBwh+kn3boYS8Ajte48vcTqmdpzCnMN9keiDQ33m8Q3xV45scH9SM2fO29jvMJa47Kj2VaA9tO/RJBHruNsJ2Dugic2FChxXF72V3CPcUjsBrvLZmejf4HVzzASfCk4hSd6RrAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"resultado\"\n        title=\"resultado\"\n        data-src=\"/static/0dc2bf8ae16eae58ccaaaf091f1567a7/d9199/resultado.png\"\n        data-srcset=\"/static/0dc2bf8ae16eae58ccaaaf091f1567a7/8ff5a/resultado.png 240w,\n/static/0dc2bf8ae16eae58ccaaaf091f1567a7/e85cb/resultado.png 480w,\n/static/0dc2bf8ae16eae58ccaaaf091f1567a7/d9199/resultado.png 960w,\n/static/0dc2bf8ae16eae58ccaaaf091f1567a7/d56b5/resultado.png 1215w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Sensacional né?</p>\n<p><img src=\"https://media.giphy.com/media/Kd5LwXZAVVmAOjqY3y/giphy.gif\" alt=\"https://media.giphy.com/media/Kd5LwXZAVVmAOjqY3y/giphy.gif\"></p>\n<p>O Código fonte você encontra <a href=\"https://github.com/LorenaKauane/gerador-arquivos-react\">aqui</a>!</p>\n<p>Agora vamos gerar um packege e compartilhar com os amigos, mas antes você precisa definir o publisher no package.json e alterar o readme do projeto:</p>\n<p><code class=\"language-text\">npm install -g vsce</code></p>\n<p><code class=\"language-text\">vsce package</code></p>\n<p>Ele vai gerar um package na raiz do projeto:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 351px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 160.83333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAIAAACdAM/hAAAACXBIWXMAAAsSAAALEgHS3X78AAADK0lEQVQ4y41V247bNhD1Z6RJY1sXSyIlSiIlUeJNV9s1amRTZxPvppu0D30o0j4Ufe7Pd2yl6AbZ2AJGEmH4kGfOnBnOGK/3Px0Prw9v3v386nC8Ody9vft4uL1/fbh78+7h9vgwbPeIFE/GzMeUUCGPf2V6m3EldF9UJogYihgmGYSH0xVKnoyZ5WLbj+nNp0QMGReV7tOsmtvBwkHje+nib8XM9oiH4+OnpjQSxwUmDMcZLVQpTJjk8A9rFX4rABz5OPlx/0NR1RnXXNR5ZWJWOgFxfHIB+RnsBsmu67oWYLWq+1K1tBBA+DJyBIffLXCjgj8/+CE1uu65bECMy4T/B39vhaIM3+5xmKpKtcAcx/nSmQZ+vgxbE/7+HkVZrZuhlA3kPJX2szneKO/vX32UGt0O9Fwq0GIS2EGJs+kzyUvRxLT0cXoV9hnseJEXpvaH+7RbV6KGvRYOnnLsCbyEj4uk3Aw3HwktTLeF7eZWMAk8qq11+ssxw6kQuk0zEaWF40/L+YUVyhLdv/KCWFSqgTqDT1YovlrqGTz2KvTyhyWqlemk6SlX0gzQWwtnAhjS7tMiISw72VsyrhJWuUF8nfYZHO2QTeNUdTvTruHYMM6g1FPAkeX4z9R7t9hCobns6m4j6wH4eyiZ2+hazh6OtAgzAV1ZqU6Y7txYCkwaRPSCbLPxwxtCGOWiFbqD3gC1GDfSdIRyMLl9ERz985vTaFqabaVB8A6qDfPk+dydO2jxXwCF8f0l2EW4ahGTML1ocXqnuYAzEWFBSE8RUeh1kADWj50/goOX4tYv1nHCYlbBmRBQLdgC+iTJKgjIP4xz+DFK8kfedkMPRZI5RZGD1CCYatagNkmLF4vVOEAv0QaHkpzEWVHKtjx586Q2zPCR+ZVSQSQmTQp+OhYqXK8BCRvp5rSYAC59whjUGW6MyvRZqSHhueVfN4m1wuHugao1DDA4vBl2I+1zRtE1sIvR/g8iNlK30I9QasZ1XqqXVrB0v7hunrQnsSMeJLxUDdjrnPYAssm6r/utaTd1D1wa4OUG5CuTQCDmohRuxrMlGIT/aDE65OvB+C/691KHN/k6/wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image lazyload\"\n        alt=\"geradorpackege\"\n        title=\"geradorpackege\"\n        data-src=\"/static/8cb20bed47d0a5f348c30907404e00ce/7c2a6/geradorpackege.png\"\n        data-srcset=\"/static/8cb20bed47d0a5f348c30907404e00ce/8ff5a/geradorpackege.png 240w,\n/static/8cb20bed47d0a5f348c30907404e00ce/7c2a6/geradorpackege.png 351w\"\n        sizes=\"(max-width: 351px) 100vw, 351px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Para instalar localmente e só rodar:</p>\n<p><code class=\"language-text\">code --install-extension my-extension-0.0.1.vsix.</code></p>\n<p>Me conta o que achou aqui nos comentários!</p>\n<p>Espero ter ajudado,</p>\n<p>Até a próxima.</p>\n<p><img src=\"https://media.giphy.com/media/88iHyYghkmwsLzcRqK/giphy.gif\" alt=\"https://media.giphy.com/media/88iHyYghkmwsLzcRqK/giphy.gif\"></p>","timeToRead":6}},"pageContext":{"slug":"/como-criar-extensao-no-vscode/","previousPost":{"fields":{"slug":"/desenvolvedor-frontend-o-que-voce-precisa-saber-para-comecar/"},"frontmatter":{"templateKey":"blog-post","data":"24 de Novembro de 2020","tag":"Programação","titulo":"Desenvolvedor front-end: O que você precisa saber para começar?","locale":"pt"},"timeToRead":7},"nextPost":{"fields":{"slug":"/react-ou-vue-qual-devo-escolher-para-meu-projeto/"},"frontmatter":{"templateKey":"blog-post","data":"08 de Setembro de 2020","tag":"Programação","titulo":"React ou Vue qual devo escolher para meu projeto?","locale":"pt"},"timeToRead":3},"locale":"pt"}}}