hacks-guide-minimal-mistake.../gulpfile.js
2016-03-18 10:43:17 -04:00

97 lines
2.2 KiB
JavaScript

/* ==========================================================================
MINIMAL MISTAKES JEKYLL THEME - Gulpfile
========================================================================== */
/**
*
* Packages used
*
**/
var gulp = require("gulp");
var sass = require("gulp-sass");
var prefix = require("gulp-autoprefixer");
var plumber = require("gulp-plumber");
var uglify = require("gulp-uglifyjs");
var jshint = require("gulp-jshint");
var rename = require("gulp-rename");
var imagemin = require("gulp-imagemin");
var pngquant = require("imagemin-pngquant");
/**
*
* Styles
* - Compile
* - Compress/Minify
* - Catch errors (gulp-plumber)
* - Run through Autoprefixer
*
**/
gulp.task("css", function() {
return gulp.src("assets/scss/**/*.scss")
.pipe(sass({outputStyle: "compressed"}))
.pipe(prefix("last 2 versions", "> 5%", "ie 9"))
.pipe(plumber())
.pipe(gulp.dest("assets/css"));
});
/**
*
* Javascript
* - Concatenate main script with plugins
* - Uglify
* - Rename
*
**/
gulp.task("scripts", function() {
return gulp.src(["assets/js/vendor/jquery/*.js", "assets/js/plugins/**/*.js", "assets/js/_main*.js"])
.pipe(uglify())
.pipe(rename({
basename: "main",
suffix: ".min",
}))
.pipe(gulp.dest("assets/js"))
});
/**
*
* Javascript
* - Lint for errors
*
**/
gulp.task("jslint", function() {
return gulp.src("assets/js/_*.js")
.pipe(jshint())
.pipe(jshint.reporter("default"))
.pipe(jshint.reporter("fail"))
});
/**
*
* Images
* - Optimize image assets
*
**/
gulp.task("images", function () {
return gulp.src("images/*")
.pipe(imagemin({
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngquant()]
}))
.pipe(gulp.dest("images"));
});
/**
*
* Default task
* - Runs scss, scripts and image tasks
* - Watches for scss, script, and image changes
*
**/
gulp.task("default", ["css", "jslint", "scripts", "images"], function () {
gulp.watch("assets/scss/**/*.scss", ["css"]);
gulp.watch("assets/js/_*.js", ["jslint"]);
gulp.watch(["!assets/js/**/*_.js", "assets/js/plugins/**/*.js", "assets/js/vendor/**/*.js"], ["scripts"]);
gulp.watch("images/*", ["images"]);
});