Forked from benoitboucart/gist:f80090c87fa97f4e4098
Last active
August 29, 2015 14:16
-
-
Save ajmalafif/edf875ac0a4bb2c85962 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
/** | |
* For more information see this tutorial: http://blog.webbb.be/use-jekyll-with-gulp/ | |
* | |
* Libs import | |
* --> How to install? npm install --save-dev gulp-minify-html | |
* @type {[type]} | |
*/ | |
var gulp = require('gulp'), | |
path = require('path'), | |
// CSS | |
compass = require('gulp-compass'), | |
minifyCSS = require('gulp-minify-css'), | |
// JS BUILD | |
concat = require('gulp-concat'), | |
rename = require('gulp-rename'), | |
uglify = require('gulp-uglify'), | |
// HTML | |
htmlmin = require('gulp-htmlmin'), | |
// Browser sync | |
browserSync = require('browser-sync'), | |
// Import files | |
pkg = require('./package.json') | |
; | |
var dist = '_source/' | |
, dirPublic = '/' | |
, distAssets = dist + dirPublic + 'assets/' | |
, distStylesheets = distAssets + 'css/' | |
, distJavascripts = distAssets + 'js/' | |
, distImages = distAssets + 'img/' | |
, deploy = '_deploy/' | |
, src = '' | |
, srcStylesheets = src + 'sass/' | |
, srcJavascripts = src + 'js/' | |
, srcTemplates = src + 'templates/' | |
; | |
// --> | |
// Compass & SASS | |
// <-- | |
gulp.task('compass', function() { | |
gulp.src(srcStylesheets + '*.scss') | |
.pipe(compass({ | |
css: distStylesheets, | |
sass: srcStylesheets, | |
image: distImages, | |
logging: true, | |
style: 'compressed' | |
})) | |
.on('error', function(err) { | |
// Would like to catch the error here | |
console.log('Compass error') | |
console.log(err); | |
}) | |
.pipe(minifyCSS({keepBreaks: false, keepSpecialComments:true})) | |
.pipe(gulp.dest(distStylesheets)); | |
}); | |
// --> | |
// HTML | |
// <-- | |
gulp.task('html', ['jekyll'], function() { | |
// --> Minhtml | |
gulp.src([ | |
path.join(deploy, '*.html'), | |
path.join(deploy, '*/*/*.html'), | |
path.join(deploy, '*/*/*/*.html') | |
]) | |
.pipe(htmlmin({collapseWhitespace: true})) | |
.pipe(gulp.dest(deploy)) | |
.pipe(browserSync.reload({stream:true, once: true})); | |
}); | |
// --> | |
// Browser Sync | |
// <-- | |
gulp.task('browser-sync', function() { | |
browserSync.init(null, { | |
server: { | |
baseDir: "./" + deploy | |
} | |
}); | |
}); | |
// Reload all Browsers | |
gulp.task('bs-reload', function () { | |
browserSync.reload(); | |
}); | |
// --> | |
// js | |
// Concatenate & JS build | |
// <-- | |
gulp.task('js', function () { | |
gulp.src([srcJavascripts + 'plugins.js', srcJavascripts + 'main.js']) | |
.pipe(concat(pkg.name + '.js')) | |
.pipe(gulp.dest(distJavascripts)) | |
.pipe(rename(pkg.name + '.min.js')) | |
.pipe(uglify()) | |
.pipe(gulp.dest(distJavascripts)); | |
}); | |
// --> | |
// Default task | |
// <-- | |
gulp.task('jekyll', ['js', 'compass'], function (gulpCallBack){ | |
var spawn = require('child_process').spawn; | |
// After build: cleanup HTML | |
var jekyll = spawn('jekyll', ['build'], {stdio: 'inherit'}); | |
jekyll.on('exit', function(code) { | |
gulpCallBack(code === 0 ? null : 'ERROR: Jekyll process exited with code: '+code); | |
}); | |
}); | |
// --> | |
// Default task | |
// <-- | |
gulp.task('default', ['compass', 'js', 'html', 'browser-sync'], function (event) { | |
// --> CSS | |
gulp.watch(srcStylesheets+"**", ['html']); | |
--> HTML | |
gulp.watch([ | |
path.join(dist, '*.html'), | |
path.join(dist, '*/*.html'), | |
path.join(dist, '*/*.md') | |
], ['html']); | |
// --> Ruby | |
gulp.watch(path.join(dist, '*/*.rb'), ['html']); | |
// --> JS | |
gulp.watch(srcJavascripts+"*.js", ['html']); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment