cwonrails
4/5/2016 - 2:17 PM

gulpfile.babel.js

import gulp from 'gulp';

// css
import autoprefixer from 'autoprefixer';
import postcss from 'gulp-postcss';
import stylelint from 'stylelint';

// html
import htmlmin from 'gulp-htmlmin';

// images
import imagemin from 'gulp-imagemin';

// js
import babel from 'gulp-babel';
import eslint from 'gulp-eslint';

// utilities
import browserSync from 'browser-sync';
import del from 'del';
import rename from 'gulp-rename';

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/'
  }
};

const clean = () => del([ 'dist/*' ]);
export { clean };

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(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 default build;