gulpfile.js 3.48 KB
var gulp = require('gulp'),
    gutil = require('gulp-util'),
    compass = require('gulp-compass'),
    plumber = require('gulp-plumber'),
    uglify = require('gulp-uglify'),
    watch = require('gulp-watch'),
    concat = require('gulp-concat'),
    notify = require('gulp-notify'),
    csso = require('gulp-csso'),
    autoprefixer = require('gulp-autoprefixer'),
    jshint = require('gulp-jshint'),
    htmlhint = require("gulp-htmlhint"),
    cmq = require('gulp-combine-media-queries'),
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    sourcemaps = require('gulp-sourcemaps')
;

gulp.task('css', function() {
    gulp.src(['src/sass/**/*.sass', 'src/sass/**/*.scss'])
        //.pipe(plumber({
        //    errorHandler: function (error) {
        //        console.log(error.message);
        //        this.emit('end');
        //    }}))
        .pipe(sourcemaps.init())
        .pipe(compass({
            //sourcemap: true,
            css: 'css',
            sass: 'src/sass',
            image: 'img'
        }))
        .on('error', swallowError)
        .pipe(autoprefixer({
            remove: false
        }))
        //.pipe(csso())
        .pipe(gulp.dest('./css'))
    ;
});

gulp.task('jsHintModules', function() {
    return gulp.src('./src/js/modules/*.js')
        .pipe(jshint({
            //enforceall: true
        }))
        .pipe(jshint.reporter('default'));
});

gulp.task('jsConcat', function() {
    return gulp.src([
        'src/js/modernizr-tests.js',
        //'node_modules/jquery/dist/jquery.min.js',
        'src/js/jquery-1.11.3.min.js',
        'src/js/jquery-ui.min.js',
        'src/js/plugins/*.js',
        'src/js/app.js',
        'src/js/misc/*.js',
        'src/js/modules/*.js'
    ])
        .pipe(concat('compiled.js'))
        //.pipe(uglify())
        .pipe(gulp.dest('./js'))
        //.pipe(console.log('jsConcat done'))
    ;
});

gulp.task('imagemin', function () {
    gulp.src(['_temp/**/*.png', '_temp/**/*.jpg'])
        .pipe(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngquant()]
        }))
        .pipe(gulp.dest('_temp'));

    gulp.src(['img/**/*.png'])
        .pipe(imagemin({
            progressive: true,
            svgoPlugins: [{removeViewBox: false}],
            use: [pngquant()]
        }))
        .pipe(gulp.dest('img'));
});

gulp.task('min', function() {
    gulp.src(['js/compiled.js'])
        .pipe(uglify())
        .pipe(gulp.dest('./js'))
    ;

    gulp.src(['css/main.css'])
        .pipe(csso())
        .pipe(gulp.dest('./css'))
    ;
});

gulp.task('watch', function() {
    // watch scss files
    //gulp.watch(['src/sass/**/*.sass', 'src/sass/**/*.scss'], function() {
    //    gulp.run('css');
    //});

    gulp.watch(['src/sass/**/*.sass', 'src/sass/**/*.scss'], ['css']);

    // watch JS modules files
    gulp.watch('src/js/modules/*.js', ['jsHintModules']);

    // concat JS
    gulp.watch('src/js/**/*.js', ['jsConcat']);

    // concat JS
    gulp.watch('gulpfile.js', function() {
        gulp.run('css');
        gulp.run('jsConcat');
    });

    // imagemin
    //gulp.watch(['_temp/**/*.png', 'img/**/*.png'], ['imagemin']);
});

gulp.task('default', ['watch']);

function swallowError (error) {
    //If you want details of the error in the console
    console.log(error.toString());
    this.emit('end');
}