Getting started with gulp

Gulp is an automated tool that helps to enhance workflow.

Why gulp?

  • Simple
  • Automation of tasks
  • Platform independent
  • Plugins available in large number

Getting started

Installation Instructions

  • NPM needs to be installed in order to install gulp. Please find the installation instructions here.

  • Remove gulp (if installed before)

    npm rm --global gulp
    
  • Install gulp

    # Globally
    npm install --global gulp-cli
    
    # Within a project
    npm install gulp --save-dev
    

Implementation in a project

  • Create a file gulpfile.js in project’s root folder and add following contents in it.

    var gulp = require('gulp');
    
    gulp.task('default', function() {
      // default task
    });
    
  • Run gulp. This will run the default task as defined above.

    gulp
    
  • For a specific task

    gulp.task('test', function() {
      console.log('This is a test task');
    });
    
    # gulp <task_name>
    gulp test
    

Sample gulpfile.js

var gulp = require('gulp');
var sass = require('gulp-sass');
var babel = require('gulp-babel');
var notify = require('gulp-notify');
var minify = require('gulp-minify');
var concat = require('gulp-concat');

var SCSS_FILES = 'src/sass/**/*.scss';
var JS_FILES = 'src/js/**/*.js';
var ES6_FILES = 'src/js/es6/**/*.js';

// Handle any error that appears during execution of gulp tasks
var errorHandler = function(error) {
  notify.onError({
    title: 'Task Failed [' + error.plugin + ']',
    message: 'Oops! Something went north!',
    sound: true
  })(error);

  // Prevent gulp watch from stopping
  this.emit('end');
};

// Convert the sass files to css
gulp.task('sass', function() {
  return gulp
    .src(SCSS_FILES)
    .pipe(sass())
    .on('error', errorHandler)
    .pipe(gulp.dest('public/css/'))
    .pipe(
      notify({
        message: 'SCSS completed'
      })
    );
});

// Concat the css files to a single file
gulp.task('concat-css', function() {
  return gulp
    .src(SCSS_FILES)
    .pipe(sass())
    .pipe(concat('compiled.scss'))
    .pipe(gulp.dest('public/css/'));
});

// Concat the js files to a single file
gulp.task('concat-js', function() {
  return gulp
    .src(JS_FILES)
    .pipe(concat('compiled.js'))
    .pipe(gulp.dest('public/js/'));
});

// Transpile ES6 into JavaScript(ES5)
gulp.task('es6', function() {
  return gulp
    .src(ES6_FILES)
    .pipe(babel())
    .on('error', errorHandler)
    .pipe(gulp.dest('public/js/'))
    .pipe(
      notify({
        message: 'ES6 Compiled'
      })
    );
});

// Minify js files
gulp.task('minify-js', function() {
  return gulp
    .src(JS_FILES)
    .pipe(concat('compiled.js'))
    .pipe(minify())
    .pipe(gulp.dest('public/js/'));
});

// Default task
gulp.task('default', ['sass', 'es6']);

// Watch files for any change
gulp.task('watch', function() {
  gulp.watch(SCSS_FILES, ['sass']);
  gulp.watch(ES6_FILES, ['es6']);
});

Download above gulp file from here.

Resources