{"componentChunkName":"component---src-templates-blog-post-js","path":"/guides/es6-linting-with-gulp/","result":{"data":{"site":{"siteMetadata":{"title":"Be Brav3"}},"markdownRemark":{"id":"6ba2766d-7ebf-5761-b17d-a67620d689dd","excerpt":"Update: This post is outdated and has been archived. This guide assumes your development environment is either Linux or OS X and have already installed Git. The…","html":"<h2>Update: This post is outdated and has been archived.</h2>\n<p>This guide assumes your development environment is either Linux or OS X and have already installed Git. The methods below has been tested to work on Cloud9 IDE. The guide has been based on the configuration from <a href=\"http://shop.oreilly.com/product/0636920035534.do\">Learning Javascript, 3rd Edition by Ethan Brown</a></p>\n<p>Step 1: Install Node.js if its not already installed. This will install the npm package management tool which is essential to installing the linting tools. Cloud9 has Node and npm installed by default.</p>\n<p>Step 2: Run <code class=\"language-text\">npm init</code> to create a package.json file for configuration of npm installs</p>\n<p>Step 3: Install gulp [bash]npm install -g gulp[/bash]</p>\n<p>Step 4: In your project folder install gulp as a dev dependency [bash]npm install –save-dev gulp[/bash]</p>\n<p>Step 5: Create a gulp file for gulp configuration <code class=\"language-text\">gulpfile.js</code> in the project folder</p>\n<p>Step 6: Within the gulp file, enter the following values</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> gulp <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Gulp dependencies go here</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">task</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span><span class=\"token keyword\">default</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</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\n<span class=\"token comment\">// Gulp tasks go here</span>\n\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Step 7: Run the command <code class=\"language-text\">gulp</code> to check gulp is running correctly. We’ll need to update the configuration later. The basic configuration we’ve entered is enough to get gulp running. You should see something like below:</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token punctuation\">[</span><span class=\"token number\">20</span>:03:46<span class=\"token punctuation\">]</span> Using gulpfile ~/workspace/project/gulpfile.js\n\n<span class=\"token punctuation\">[</span><span class=\"token number\">20</span>:03:46<span class=\"token punctuation\">]</span> Starting <span class=\"token operator\">&amp;</span><span class=\"token comment\">#8216;default&amp;#8217;&amp;#8230;</span>\n\n<span class=\"token punctuation\">[</span><span class=\"token number\">20</span>:03:46<span class=\"token punctuation\">]</span> Finished <span class=\"token operator\">&amp;</span><span class=\"token comment\">#8216;default&amp;#8217; after 80 μs</span></code></pre></div>\n<p>Step 8: Install the Babel transcompiler to transform ES6 to ES5\n<code class=\"language-text\">npm install &amp;#8211;save-dev gulp-babel</code></p>\n<p><code class=\"language-text\">npm install &amp;#8211;save-dev babel-preset-es2015</code></p>\n<p>Step 9: Create a Babel configuration file <code class=\"language-text\">.babelrc</code> with the following content:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token punctuation\">{</span> <span class=\"token string\">\"presets\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"es2015\"</span><span class=\"token punctuation\">]</span> <span class=\"token punctuation\">}</span></code></pre></div>\n<p>Step 10: Configure Gulp to run Babel, open up the gulpfile again and add the following. The source and destination configuration assumes you’ve already created the following directory structure under your project folder:</p>\n<p>es6/</p>\n<p>dist/</p>\n<p>public/es6/</p>\n<p>public/dist/</p>\n<p>Gulp will use Babel to transform ES6 code in the es6 folders and create compatible es5 javascript in the dist folders. Change the folders and configuration as you like.</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> gulp <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> babel <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">-</span>babel<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">task</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span><span class=\"token keyword\">default</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</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\n<span class=\"token comment\">// Node source</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">src</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"es6/\\_\\*/\\*.js\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span><span class=\"token function\">babel</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span>gulp<span class=\"token punctuation\">.</span><span class=\"token function\">dest</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"dist\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// browser source</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">src</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"public/es6/\\_\\*/\\*.js\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span><span class=\"token function\">babel</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span>gulp<span class=\"token punctuation\">.</span><span class=\"token function\">dest</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"public/dist\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Step 11: Install ESLint to lint your ES6 javascript code <code class=\"language-text\">npm install -g eslint</code></p>\n<p>and <code class=\"language-text\">npm install &amp;#8211;save-dev gulp-eslint</code></p>\n<p>Step 12: Install <a href=\"https://www.npmjs.com/package/eslint-config-airbnb\">Airbnb ES6 linting rules</a> in your project folder <code class=\"language-text\">npm install &amp;#8211;save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint</code></p>\n<p>Step 13: Create <code class=\"language-text\">.eslintrc.json</code> file in the project folder with the following content:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token punctuation\">{</span>\n\n<span class=\"token string\">\"extends\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"airbnb\"</span><span class=\"token punctuation\">,</span>\n\n<span class=\"token string\">\"rules\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n\n<span class=\"token string\">\"indent\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n\n<span class=\"token string\">\"error\"</span><span class=\"token punctuation\">,</span>\n\n<span class=\"token number\">4</span>\n\n<span class=\"token punctuation\">]</span>\n\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Step 14: Modify gulpfile.js to run eslint:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> gulp <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> babel <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">-</span>babel<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> eslint <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span>gulp<span class=\"token operator\">-</span>eslint<span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">task</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8216</span><span class=\"token punctuation\">;</span><span class=\"token keyword\">default</span><span class=\"token operator\">&amp;</span>#<span class=\"token number\">8217</span><span class=\"token punctuation\">;</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\n<span class=\"token comment\">// Run ESLint</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">src</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"es6/*\\*/\\*.js\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"public/es6/*\\*/\\*.js\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span><span class=\"token function\">eslint</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span>eslint<span class=\"token punctuation\">.</span><span class=\"token function\">format</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Node source</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">src</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"es6/\\_\\*/\\*.js\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span><span class=\"token function\">babel</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span>gulp<span class=\"token punctuation\">.</span><span class=\"token function\">dest</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"dist\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// browser source</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">src</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"public/es6/\\_\\*/\\*.js\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span><span class=\"token function\">babel</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">.</span><span class=\"token function\">pipe</span><span class=\"token punctuation\">(</span>gulp<span class=\"token punctuation\">.</span><span class=\"token function\">dest</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"public/dist\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>","frontmatter":{"title":"ES6 Linting With Gulp","date":"July 26, 2016","description":null}}},"pageContext":{"slug":"/guides/es6-linting-with-gulp/","previous":{"fields":{"slug":"/blog/freecodecamp/frontend/css/fcc-challenge-36-give-a-background-color-to-a-div-element/"},"frontmatter":{"title":"FCC Challenge 36: Give a Background Color to a Div Element"}},"next":{"fields":{"slug":"/guides/setting-up-eclipse-ide-with-selenium-webdriver-and-testng/"},"frontmatter":{"title":"Setting Up Eclipse IDE With Selenium WebDriver and TestNG"}}}}}