var argv = require('minimist')(process.argv.slice(2)); var autoprefixer = require('gulp-autoprefixer'); var chmod = require('gulp-chmod'); var concat = require('gulp-concat'); var gulp = require('gulp'); var gulpif = require('gulp-if'); var jade = require('gulp-jade'); var livereload = require('gulp-livereload'); var plumber = require('gulp-plumber'); var rename = require('gulp-rename'); var sass = require('gulp-sass'); var sourcemaps = require('gulp-sourcemaps'); var uglify = require('gulp-uglify'); var enabled = { uglify: argv.production, maps: argv.production, failCheck: argv.production, prettyPug: !argv.production, liveReload: !argv.production }; /* CSS */ gulp.task('styles', function() { gulp.src('src/styles/**/*.sass') .pipe(gulpif(enabled.failCheck, plumber())) .pipe(gulpif(enabled.maps, sourcemaps.init())) .pipe(sass({ outputStyle: 'compressed'} )) .pipe(autoprefixer("last 3 versions")) .pipe(gulpif(enabled.maps, sourcemaps.write("."))) .pipe(gulp.dest('attract_server/static/assets/css')) .pipe(gulpif(enabled.liveReload, livereload())); }); /* Templates - Jade */ gulp.task('templates', function() { gulp.src('src/templates/**/*.jade') .pipe(gulpif(enabled.failCheck, plumber())) .pipe(jade({ pretty: enabled.prettyPug })) .pipe(gulp.dest('attract_server/templates/')) .pipe(gulpif(enabled.liveReload, livereload())); }); /* Individual Uglified Scripts */ gulp.task('scripts', function() { gulp.src('src/scripts/*.js') .pipe(gulpif(enabled.failCheck, plumber())) .pipe(gulpif(enabled.maps, sourcemaps.init())) .pipe(gulpif(enabled.uglify, uglify())) .pipe(rename({suffix: '.min'})) .pipe(gulpif(enabled.maps, sourcemaps.write("."))) .pipe(chmod(644)) .pipe(gulp.dest('attract_server/static/assets/js/')) .pipe(gulpif(enabled.liveReload, livereload())); }); // While developing, run 'gulp watch' gulp.task('watch',function() { livereload.listen(); gulp.watch('src/styles/**/*.sass',['styles']); gulp.watch('src/templates/**/*.jade',['templates']); gulp.watch('src/scripts/*.js',['scripts']); }); // Run 'gulp' to build everything at once gulp.task('default', ['styles', 'templates', 'scripts']);