Be Brav3

ES6 Linting With Gulp

July 26, 2016

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 methods below has been tested to work on Cloud9 IDE. The guide has been based on the configuration from Learning Javascript, 3rd Edition by Ethan Brown

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.

Step 2: Run npm init to create a package.json file for configuration of npm installs

Step 3: Install gulp [bash]npm install -g gulp[/bash]

Step 4: In your project folder install gulp as a dev dependency [bash]npm install –save-dev gulp[/bash]

Step 5: Create a gulp file for gulp configuration gulpfile.js in the project folder

Step 6: Within the gulp file, enter the following values

const gulp = require(‘gulp’);

// Gulp dependencies go here

gulp.task(‘default’, function() {

// Gulp tasks go here

});

Step 7: Run the command gulp 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:

[20:03:46] Using gulpfile ~/workspace/project/gulpfile.js

[20:03:46] Starting ‘default’…

[20:03:46] Finished ‘default’ after 80 μs

Step 8: Install the Babel transcompiler to transform ES6 to ES5 npm install –save-dev gulp-babel

npm install –save-dev babel-preset-es2015

Step 9: Create a Babel configuration file .babelrc with the following content:

{ "presets": ["es2015"] }

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:

es6/

dist/

public/es6/

public/dist/

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.

const gulp = require(‘gulp’);

const babel = require(‘gulp-babel’);

gulp.task(‘default’, function() {

// Node source

gulp.src("es6/\_\*/\*.js")

.pipe(babel())

.pipe(gulp.dest("dist"));

// browser source

gulp.src("public/es6/\_\*/\*.js")

.pipe(babel())

.pipe(gulp.dest("public/dist"));

});

Step 11: Install ESLint to lint your ES6 javascript code npm install -g eslint

and npm install –save-dev gulp-eslint

Step 12: Install Airbnb ES6 linting rules in your project folder npm install –save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y eslint

Step 13: Create .eslintrc.json file in the project folder with the following content:

{

"extends": "airbnb",

"rules": {

"indent": [

"error",

4

]

}

}

Step 14: Modify gulpfile.js to run eslint:

const gulp = require(‘gulp’);

const babel = require(‘gulp-babel’);

const eslint = require(‘gulp-eslint’);

gulp.task(‘default’, function() {

// Run ESLint

gulp.src(["es6/*\*/\*.js", "public/es6/*\*/\*.js"])

.pipe(eslint())

.pipe(eslint.format());

// Node source

gulp.src("es6/\_\*/\*.js")

.pipe(babel())

.pipe(gulp.dest("dist"));

// browser source

gulp.src("public/es6/\_\*/\*.js")

.pipe(babel())

.pipe(gulp.dest("public/dist"));

});