Skip to content

Instantly share code, notes, and snippets.

@seabre
Created July 13, 2014 04:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seabre/cc068c90c5d531382cdc to your computer and use it in GitHub Desktop.
Save seabre/cc068c90c5d531382cdc to your computer and use it in GitHub Desktop.
// include gulp and required plugins
var gulp = require('gulp');
var sass = require('gulp-ruby-sass');
var browserSync = require('browser-sync');
var notify = require('gulp-notify');
var imagemin = require('gulp-imagemin');
var pngcrush = require('imagemin-pngcrush');
var cp = require('child_process');
var messages = {
jekyllBuild: '<span style="color: grey">Running:</span> $ jekyll build'
};
// build the jekyll site
gulp.task('jekyll-build', function (done) {
browserSync.notify(messages.jekyllBuild);
return cp.spawn('jekyll', ['build'], {stdio: 'inherit'})
.on('close', done);
});
// rebuild jekyll and do page reload
gulp.task('jekyll-rebuild', ['jekyll-build'], function () {
browserSync.reload();
});
// compile sass into both _site/assets/css (for live injecting) and site (for future jekyll builds)
gulp.task('compile-sass', function () {
var loadPaths = [
'bower_components/bourbon/dist/**/*.scss',
'bower_components/bootstrap-sass-official/vendor/assets/stylesheets/**/*.scss',
'sass/**/*.scss'
]
return gulp.src(loadPaths)
.pipe(sass({ loadPath: loadPaths, sourcemap: true, style: 'compressed'}))
.on("error", notify.onError(function (error) {
return "Dang! " + error.message;
}))
.pipe(gulp.dest('css'))
.pipe(gulp.dest('_site/css'));
});
// minify PNG, JPEG, GIF and SVG images
gulp.task('imagemin', function () {
return gulp.src('img/**/*')
.pipe(imagemin({
progressive: true,
svgoPlugins: [{removeViewBox: false}],
use: [pngcrush()]
}))
.pipe(gulp.dest('img/'))
.pipe(gulp.dest('_site/img/'));
});
// start a server and watch for html and css changes
gulp.task('browser-sync', ['compile-sass', 'jekyll-build'], function() {
browserSync.init(['_site/css/*.css'], {
server: {
baseDir: '_site'
}
});
});
// watch for changes
gulp.task('default', ['imagemin', 'browser-sync'], function () {
gulp.watch(['sass/**/*.scss'], ['compile-sass']);
gulp.watch(['img/**/*'], ['imagemin']);
gulp.watch([ '*.yml', '*.md', '*.html', '_includes/*.html', '_layouts/*.html'], ['jekyll-rebuild']);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment