{"componentChunkName":"component---src-templates-blog-post-js","path":"/how-to-create-extension-in-vscode/","result":{"data":{"markdownRemark":{"fields":{"slug":"/how-to-create-extension-in-vscode/"},"frontmatter":{"titulo":"How to create extension in vscode","data":"16/10/2020","tag":"Programming","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>What's up ,</p>\n<p>I'm gone for a while, but I'm coming back here today to share something with you that I learned last week. How to create and publish an extension in vscode!</p>\n<p>In these last days I decided to venture out and I will tell you what I learned and how you can create your own extension.</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>Why an extension in vscode?</h3>\n<p>In microsoft's <a href=\"https://marketplace.visualstudio.com/\">marketplace</a> you will find thousands of extensions that have the main objective to help and improve your productivity while you code.</p>\n<p>In a certain situation at work, I needed to create an extension that would generate some files in automatic so that it would increase the productivity of the development team.</p>\n<p>Something simple and objective, brings benefits such as:</p>\n<ul>\n<li>Team all aligned with the project structure.</li>\n<li>Incentive to create tests (since the extension automatically creates the test file and a very simple test).</li>\n<li>Increases productivity, now it is not necessary to waste time creating the entire zero structure</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>Starting...</h3>\n<p>Well let's create an extension that generates an index file, tests and styles (with styled components). I will use as a base the project I developed on tests in react, you can read the full article on How to create tests on the front-end in ReactJs.</p>\n<p>But before creating your extension you need to have  <strong>vscode</strong>, <strong>node, git</strong>  and have a <strong>react project running with styled components</strong> ,  In the <a href=\"https://code.visualstudio.com/api\">vscode documentation</a> you have some detailed functions in case you need to find out about a specific function.</p>\n<p>Our extension will generate the following automatic codes:</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><span class=\"token punctuation\">;</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><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><span class=\"token punctuation\">;</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><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> NameComponent <span class=\"token keyword\">from</span> <span class=\"token string\">\"./\"</span><span class=\"token punctuation\">;</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><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><span class=\"token string\">\"Hello stranger, NameComponent!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3>An important note!</h3>\n<p>The name NameComponent, will actually be the name of the component you want to generate! </p>\n<p>With open vscode you will need to install <a href=\"https://yeoman.io/\">Yeoman</a> a project generator.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">npm install <span class=\"token operator\">-</span>g yo generator<span class=\"token operator\">-</span>code</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">yo code</code></pre></div>\n<p>And you will have a vision similar to this:</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>Then just access your project that you just created. And we have the following project structure.</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>The extension.js file is where the magic happens!</p>\n<p>Well let's see the magic happening!</p>\n<p>Press F5 this will run your application in debug mode and open a development host for the extension. </p>\n<p>And run Hello Wold in the command palette.</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>Right on the side will show a Hello world message!</p>\n<p>Now we are going to add an item to the menu when we press the right mouse button on any packege. </p>\n<p>For that you need to open packege.json, there and where you configure all parameters, commands for how your extension will be called, it can be by command line, Menus among others, <a href=\"https://code.visualstudio.com/api/references/contribution-points\">here</a> you can see the complete list.</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\t\t\t\t<span class=\"token property\">\"explorer/context\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n\t\t\t\t\t<span class=\"token punctuation\">{</span>\n\t\t\t\t\t\t<span class=\"token property\">\"when\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"true\"</span><span class=\"token punctuation\">,</span>\n\t\t\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\t\t<span class=\"token property\">\"group\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"navigation\"</span>\n\t\t\t\t\t<span class=\"token punctuation\">}</span>\n\t\t\t\t<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n\t\t\t\t<span class=\"token property\">\"commandPalette\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n\t\t\t\t\t<span class=\"token punctuation\">{</span>\n\t\t\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\t\t<span class=\"token property\">\"when\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"editorHasSelection\"</span>\n\t\t\t\t\t<span class=\"token punctuation\">}</span>\n\t\t\t\t<span class=\"token punctuation\">]</span>\n\t\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n...</code></pre></div>\n<p><code class=\"language-text\">extension.js</code></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><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\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Congratulations, your extension \"gerador-arquivos-react\" is now active!'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<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><span class=\"token string\">'extension.gerador-arquivos-react'</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tvscode<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\">'Hello World from gerador-arquivos-react!'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\tcontext<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><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\nexports<span class=\"token punctuation\">.</span>activate <span class=\"token operator\">=</span> activate<span class=\"token punctuation\">;</span>\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\tactivate<span class=\"token punctuation\">,</span>\n\tdeactivate\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>And you will have a view similar to this:</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>Now let's create a folder called templates and add the index, styled and test files!</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> <span class=\"token punctuation\">(</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>\n<span class=\"token punctuation\">)</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 punctuation\">(</span><span class=\"token parameter\">nameComponent</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</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>\n<span class=\"token punctuation\">)</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 punctuation\">(</span><span class=\"token parameter\">nameComponent</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</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>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Files created!</p>\n<p>Now, let's capture the path where the file will be generated and get the folder name</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><span class=\"token string\">'extension.gerador-arquivos-react'</span><span class=\"token punctuation\">,</span> <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\t<span class=\"token keyword\">const</span> filePath <span class=\"token operator\">=</span> e<span class=\"token punctuation\">.</span>path<span class=\"token punctuation\">;</span> <span class=\"token comment\">// getFilePath</span>\n\t<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 punctuation\">;</span> <span class=\"token comment\">//GetNameFolder</span>\n\tvscode<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\">'Hello World from gerador-arquivos-react!'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Now we will import the generated files in the template folder and create a Map of key and value and finally generate our files.</p>\n<p>The final file looks like this:</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><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><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><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><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><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><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\t<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><span class=\"token string\">'extension.gerador-arquivos-react'</span><span class=\"token punctuation\">,</span> <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\t\t<span class=\"token keyword\">const</span> filePath <span class=\"token operator\">=</span> e<span class=\"token punctuation\">.</span>path<span class=\"token punctuation\">;</span>\n\t\t<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 punctuation\">;</span>\n\t\t<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><span class=\"token punctuation\">;</span>\n\n\t\t<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\t\t\t<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><span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token function\">createFile</span><span class=\"token punctuation\">(</span>filePath<span class=\"token punctuation\">,</span> objectCreate <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\tvscode<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><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n\tcontext<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><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\t<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><span class=\"token punctuation\">;</span>\n\tmockTemplates<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\t\t<span class=\"token keyword\">const</span> fileName <span class=\"token operator\">=</span>  <span class=\"token string\">'styled.js'</span>\n\t\t<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\t\t<span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName <span class=\"token punctuation\">,</span> mockFunction  <span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n\tmockTemplates<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\t\t<span class=\"token keyword\">const</span> fileName <span class=\"token operator\">=</span>  <span class=\"token string\">'index.js'</span>\n\t\t<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\t\t<span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName <span class=\"token punctuation\">,</span> mockFunction  <span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n\tmockTemplates<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\t\t<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\t\t<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\t\t<span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> fileName <span class=\"token punctuation\">,</span> mockFunction  <span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span>\n\n\t<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\tfs<span class=\"token punctuation\">.</span><span class=\"token function\">writeFile</span><span class=\"token punctuation\">(</span>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> objectCreate<span class=\"token punctuation\">.</span>mockFunction<span class=\"token punctuation\">,</span> <span class=\"token keyword\">async</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">err</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>err<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\t<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>\n\t\t\t<span class=\"token string\">\"Opss.. Error\"</span>\n\t\t\t<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><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<span class=\"token punctuation\">;</span>\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\tactivate<span class=\"token punctuation\">,</span>\n\tdeactivate\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>DONE!</p>\n<p>Now and just test, create a folder and execute the extension you will have a result similar to this:</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>Wonderful right?</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>You can find the source code <a href=\"https://github.com/LorenaKauane/gerador-arquivos-react\">here</a></p>\n<p>Now we are going to generate a packege and share it with friends, but first you need to define the publisher in package.json and change the project readme:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">npm install <span class=\"token operator\">-</span>g vsce</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">vsce <span class=\"token keyword\">package</span></code></pre></div>\n<p>It will generate a package at the root of the project:</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>To install locally and just run:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\">code <span class=\"token operator\">--</span>install<span class=\"token operator\">-</span>extension my<span class=\"token operator\">-</span>extension<span class=\"token operator\">-</span><span class=\"token number\">0.0</span><span class=\"token number\">.1</span><span class=\"token punctuation\">.</span>vsix<span class=\"token punctuation\">.</span></code></pre></div>\n<p>Tell me what you found here in the comments!</p>\n<p>Hope this helps,</p>\n<p>To the next.</p>\n<p><img src=\"https://media.giphy.com/media/88iHyYghkmwsLzcRqK/giphy.gif\" alt=\"https://media.giphy.com/media/88iHyYghkmwsLzcRqK/giphy.gif\"></p>","timeToRead":5}},"pageContext":{"slug":"/how-to-create-extension-in-vscode/","previousPost":{"fields":{"slug":"/frontend-developer-what-do-you-need-to-know-to-get-started/"},"frontmatter":{"templateKey":"blog-post","data":"24 de Novembro de 2020","tag":"Programming","titulo":"Front-end developer: What do you need to know to get started?","locale":"en"},"timeToRead":6},"nextPost":{"fields":{"slug":"/react-or-vue-which-one-should-i-choose-for-my-project/"},"frontmatter":{"templateKey":"blog-post","data":"08 de Setembro de 2020","tag":"Programming","titulo":"React or Vue which one should I choose for my project?","locale":"en"},"timeToRead":4},"locale":"en"}}}