var gulp = require('gulp'); var glob = require('glob'); var path = require('path'); var jshint = require('gulp-jshint'); var sass = require('gulp-sass'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var rename = require('gulp-rename'); var minifyCSS = require('gulp-minify-css'); var babelify = require('babelify'); var browserify = require('browserify'); var source = require('vinyl-source-stream'); var buffer = require('vinyl-buffer'); var wrap = require('gulp-wrap'); var qunit = require('gulp-qunit'); var babel = require('gulp-babel'); // Lint Task gulp.task('lint', function() { gulp.src('dev/sweetalert.es6.js') .pipe(jshint()) .pipe(jshint.reporter('default')); return gulp.src('dev/*/*.js') .pipe(jshint()) .pipe(jshint.reporter('default')); }); // Compile Our Sass gulp.task('sass', function() { gulp.src('example/example.scss') .pipe(sass()) .pipe(rename('example.css')) .pipe(gulp.dest('example')); // (We don't use minifyCSS since it breaks the ie9 file for some reason) gulp.src(['dev/sweetalert.scss', 'dev/ie9.css', 'dev/loader-animation.css']) .pipe(sass()) .pipe(concat('sweetalert.css')) .pipe(gulp.dest('dist')); }); // Compile theme CSS var themes = glob.sync('themes/*').map(function(themeDir) { return path.basename(themeDir); }); themes.forEach(function(name) { gulp.task(name + '-theme', function() { return gulp.src('themes/' + name + '/' + name + '.scss') .pipe(sass()) // etc .pipe(rename(name + '.css')) .pipe(gulp.dest('themes/' + name)) }); }); gulp.task('themes', themes.map(function(name){ return name + '-theme'; })); // Compile ES5 CommonJS entry point gulp.task('commonjs', function() { gulp.src('./dev/sweetalert.es6.js') .pipe(babel()) .pipe(rename('sweetalert.js')) .pipe(gulp.dest('lib')); gulp.src('./dev/modules/*.js') .pipe(babel()) .pipe(gulp.dest('lib/modules')); }); // Concatenate & Minify JS gulp.task('scripts', function() { return browserify({ entries: './dev/sweetalert.es6.js', debug: true }) .transform(babelify) .bundle() .pipe(source('sweetalert-dev.js')) .pipe(wrap({ src: './dev/gulpfile-wrap-template.js' })) .pipe(gulp.dest('dist')) // Developer version .pipe(rename('sweetalert.min.js')) .pipe(buffer()) .pipe(uglify()) .pipe(gulp.dest('dist')); // User version }); gulp.task('test', function() { return gulp.src('./test/index.html') .pipe(qunit({ timeout: 20 })); }); // Watch Files For Changes gulp.task('watch', function() { gulp.watch(['dev/*.js', 'dev/*/*.js'], ['lint', 'scripts']); gulp.watch(['dev/*.scss', 'dev/*.css'], ['sass']); gulp.watch('themes/*/*.scss', ['themes']); }); // Default Task gulp.task('default', ['lint', 'sass', 'scripts', 'commonjs', 'watch', 'test']);