'use strict'; var gulp = require('gulp'); var browserify = require('browserify'); var buffer = require('vinyl-buffer'); var rename = require('gulp-rename'); var source = require('vinyl-source-stream'); var eslint = require('gulp-eslint'); var qunit = require('gulp-qunit'); var mkdirp = require('mkdirp'); var del = require('del'); var runSequence = require('gulp4-run-sequence'); var outputPath = './dist'; gulp.task('build', function (done) { runSequence( 'clean-dist', 'create-dist', 'lint', 'compile', done); }); gulp.task('clean-dist', function () { return del(outputPath); }); gulp.task('create-dist', function (done) { return mkdirp(outputPath, done); }); gulp.task('compile', function() { return browserify('./src/main.js') .bundle() .pipe(source('main.js')) .pipe(buffer()) .pipe(rename('generated-image-editor.js')) .pipe(gulp.dest(outputPath)); }); gulp.task('test', gulp.series('compile', function() { return gulp.src('./test/index.html') .pipe(qunit({timeout: 1})); })); gulp.task('lint', function() { return gulp.src(['./src/**/*.js', './test/unit/*.js']) .pipe(eslint()) .pipe(eslint.format()) .pipe(eslint.failAfterError()); }); gulp.task('watch', function() { gulp.watch('./src/**/*.js', gulp.series('lint', 'compile')); }); gulp.task('default', gulp.series('build'));