Created
April 20, 2015 04:08
-
-
Save solepixel/04bc11c263d6a51e64f0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Load plugins | |
var gulp = require('gulp'), | |
autoprefixer = require('gulp-autoprefixer'), | |
cache = require('gulp-cache'), | |
compass = require('gulp-compass'), | |
concat = require('gulp-concat'), | |
imagemin = require('gulp-imagemin'), | |
jshint = require('gulp-jshint'), | |
imagemin = require('gulp-imagemin'), | |
livereload = require('gulp-livereload'), | |
minifyCSS = require('gulp-minify-css'), | |
notify = require('gulp-notify'), | |
plumber = require('gulp-plumber'), | |
rename = require('gulp-rename'), | |
foreach = require('gulp-foreach'), | |
path = require('path'), | |
sass = require('gulp-ruby-sass'), | |
uglify = require('gulp-uglify'), | |
gutil = require('gulp-util'); | |
// the title and icon that will be used for Gulp notification | |
var notifyInfo = { | |
title: 'Gulp' | |
}; | |
// error notification settings for plumber | |
var plumberErrorHandler = { errorHandler: notify.onError({ | |
title: notifyInfo.title, | |
message: "Error: <%= error.message %>" | |
}) | |
}; | |
// Styles | |
gulp.task('styles', function(cb){ | |
return sass( 'assets/sass/main.scss', {sourcemap: false}, {style: 'expanded', lineNumbers: true, compass: true}, { container: 'gulp-ruby-sass-styles' }) | |
//.pipe(plumber(plumberErrorHandler)) | |
.on('error', function(err) { console.log('Error', err.message) }) | |
.pipe(autoprefixer('last 2 version', 'ie 9', 'ios 6', 'android 4')) | |
.pipe(gulp.dest('assets/css')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(minifyCSS({ keepSpecialComments: 1 })) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/css')) | |
.pipe(notify({ message: 'Styles task complete' })); | |
}); | |
// Admin Styles | |
gulp.task('adminStyles', function(){ | |
return sass('assets/sass/admin.scss', {style: 'expanded', lineNumbers: true, compass: true, 'sourcemap=none': true}) | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(autoprefixer('last 2 version', 'ie 9', 'ios 6', 'android 4')) | |
.pipe(gulp.dest('assets/css')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(minifyCSS({ keepSpecialComments: 1 })) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/css')) | |
.pipe(notify({ message: 'Admin styles task complete' })); | |
}); | |
// Occasion Themes | |
var occasion_themes = { | |
evergreen: { | |
name: 'Evergreen', | |
scss: 'evergreen.scss', | |
folder: 'evergreen' | |
}, | |
fourth_of_july: { | |
name: 'Fourth of July', | |
scss: 'fourth-of-july.scss', | |
folder: 'fourth-of-july' | |
} | |
}, occasion_tasks = []; | |
Object.keys( occasion_themes ).forEach( function( theme ){ | |
var taskname = theme + '-theme'; | |
occasion_tasks.push( taskname ); | |
gulp.task( taskname, function() { | |
return sass( 'occasions/' + occasion_themes[theme].scss, {style: 'expanded', lineNumbers: true, compass: true, 'sourcemap=none': true}) | |
//.pipe(plumber(plumberErrorHandler)) | |
.on('error', function(err) { console.log('Error', err.message) }) | |
.pipe(gulp.dest('occasions/' + occasion_themes[theme].folder + '/css')) | |
.pipe(rename({ basename: 'style' })) | |
.pipe(autoprefixer('last 2 version', 'ie 9', 'ios 6', 'android 4')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(minifyCSS({ keepSpecialComments: 1 })) | |
.pipe(livereload()) | |
.pipe(gulp.dest('occasions/' + occasion_themes[theme].folder + '/css')) | |
.pipe( notify({ message: occasion_themes[theme].name + ' task complete' }) ); | |
}); | |
}); | |
gulp.task( 'occasion_themes', occasion_tasks ); | |
// Vendor Plugin Scripts | |
gulp.task('plugins', function() { | |
return gulp.src('assets/js/vendor/*.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(concat('plugins.js')) | |
.pipe(gulp.dest('assets/js/build')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/js')) | |
.pipe(notify({ message: 'Plugins task complete' })); | |
}); | |
// Site Scripts | |
gulp.task('scripts', function() { | |
return gulp.src('assets/js/source/*.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(jshint('.jshintrc')) | |
.pipe(jshint.reporter('default')) | |
.pipe(concat('bfi-main.js')) | |
.pipe(gulp.dest('assets/js/build')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/js')) | |
.pipe(notify({ message: 'Scripts task complete' })); | |
}); | |
// WP ajax script | |
gulp.task('wp-ajax', function() { | |
return gulp.src('assets/js/source/bfi-ajax.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(jshint('.jshintrc')) | |
.pipe(jshint.reporter('default')) | |
.pipe(gulp.dest('assets/js/build')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/js')) | |
.pipe(notify({ message: 'Ajax scripts task complete' })); | |
}); | |
// WP admin script | |
gulp.task('wp-admin', function() { | |
return gulp.src('assets/js/source/bfi-admin.js') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(jshint('.jshintrc')) | |
.pipe(jshint.reporter('default')) | |
.pipe(gulp.dest('assets/js/build')) | |
.pipe(rename({ suffix: '.min' })) | |
.pipe(uglify()) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/js')) | |
.pipe(notify({ message: 'Admin scripts task complete' })); | |
}); | |
// Images | |
gulp.task('images', function() { | |
return gulp.src('assets/img/**/*') | |
.pipe(plumber(plumberErrorHandler)) | |
.pipe(cache(imagemin({ optimizationLevel: 7, progressive: true, interlaced: true }))) | |
.pipe(livereload()) | |
.pipe(gulp.dest('assets/img')) | |
.pipe(notify({ message: 'Images task complete' })); | |
}); | |
// Watch | |
gulp.task('watch', function() { | |
// Listen on port 35729 | |
livereload.listen(); | |
// Watch .scss files | |
gulp.watch(['assets/sass/**/*.scss'], [ 'styles', 'adminStyles' ] ); | |
gulp.watch(['occasions/*.scss'], [ 'occasion_themes' ] ); | |
// Watch .js files | |
gulp.watch(['assets/js/vendor/*.js', 'assets/js/source/*.js'], ['plugins', 'scripts', 'wp-ajax', 'wp-admin']); | |
// Watch image files | |
// gulp.watch('assets/images/**/*', ['images']); | |
// Watch .php files | |
gulp.watch(['*.php', '**/*.php']).on('change', livereload.changed); | |
}); | |
// Default task | |
gulp.task( 'default', [ 'styles', 'adminStyles', 'occasion_themes', 'scripts', 'plugins', 'wp-ajax', 'watch'] ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment