cwonrails
4/2/2016 - 5:37 PM

gulpfile.babel.js

import gulp from 'gulp';
import babel from 'gulp-babel';
import rename from 'gulp-rename';
import htmlmin from 'gulp-htmlmin';
import imagemin from 'gulp-imagemin';
import uglify from 'gulp-uglify';
import del from 'del';

const paths = {
  html: {
    src: 'src/*.html',
    dest: 'dist/'
  },
  images: {
    src: 'src/img/*',
    dest: 'dist/img/'
  },
  scripts: {
    src: 'src/js/*.js',
    dest: 'dist/js/'
  },
  styles: {
    src: 'src/css/*.css',
    dest: 'dist/css/'
  }
};

/*
 * For small tasks you can use arrow functions and export
 */
const clean = () => del([ 'dist/*' ]);
export { clean };

/*
 * You can still declare named functions and export them as tasks
 */
export function html() {
  return gulp.src(paths.html.src, {since: gulp.lastRun('html')})
    .pipe(htmlmin())
    .pipe(gulp.dest(paths.html.dest));
}

export function images() {
  return gulp.src(paths.images.src, {since: gulp.lastRun('images')})
    .pipe(imagemin({optimizationLevel: 5}))
    .pipe(gulp.dest(paths.images.dest));
}

export function scripts() {
  return gulp.src(paths.scripts.src, {since: gulp.lastRun('scripts')})
    .pipe(babel())
    .pipe(uglify())
    .pipe(rename({
      basename: 'main',
      suffix: '.min'
    }))
    .pipe(gulp.dest(paths.scripts.dest));
}

export function styles() {
  return gulp.src(paths.styles.src, {since: gulp.lastRun('styles')})
    .pipe(rename({
      basename: 'main',
      suffix: '.min'
    }))
    .pipe(gulp.dest(paths.styles.dest));
}

export function watch() {
  gulp.watch(paths.html.src, html);
  gulp.watch(paths.images.src, images);
  gulp.watch(paths.scripts.src, scripts);
  gulp.watch(paths.styles.src, styles);
}

const build = gulp.series(clean, gulp.parallel(html, images, scripts, styles));
export { build };

/*
 * Export a default task
 */
export default build;