Skip to content

Instantly share code, notes, and snippets.

@craigmdennis
Created March 11, 2015 01:05
Show Gist options
  • Save craigmdennis/c934964d6300dc986194 to your computer and use it in GitHub Desktop.
Save craigmdennis/c934964d6300dc986194 to your computer and use it in GitHub Desktop.
Deploy to GitHub pages with Gulp
"use strict"
# Include gulp
gulp = require 'gulp'
# Include Our Plugins
jshint = require 'gulp-jshint'
jade = require 'gulp-jade'
del = require 'del'
sass = require 'gulp-sass'
concat = require 'gulp-concat'
uglify = require 'gulp-uglify'
rename = require 'gulp-rename'
coffee = require 'gulp-coffee'
coffeelint = require 'gulp-coffeelint'
gutil = require 'gulp-util'
gulpif = require 'gulp-if'
sourcemaps = require 'gulp-sourcemaps'
filter = require 'gulp-filter'
browserSync = require 'browser-sync'
notify = require 'gulp-notify'
deploy = require 'gulp-gh-pages'
reload = browserSync.reload
# Compile Our Sass
gulp.task 'styles', ->
gulp.src 'assets/stylesheets/*.scss'
.pipe sourcemaps.init()
.pipe sass()
.pipe gulp.dest 'layouts/assets/'
.pipe reload {stream: true}
.pipe sourcemaps.write()
# Compile our CoffeeScript, Concat and Minify
gulp.task 'scripts', ->
gulp.src 'assets/javascripts/**/*'
.pipe gulpif /[.]coffee$/, coffeelint()
.pipe gulpif /[.]coffee$/, coffeelint.reporter()
.pipe gulpif /[.]coffee$/, coffee({bare: true})
.on 'error', notify.onError (error) ->
error.message
.pipe concat 'application.js'
.pipe uglify()
.pipe gulp.dest 'layouts/assets/'
# Compile our CoffeeScript, Concat and Minify
gulp.task 'views', ->
gulp.src 'assets/jade/[^_]*.jade'
.pipe jade
pretty: true
.pipe gulp.dest 'layouts'
# Clean our output directory
gulp.task 'clean', ->
del([
'layouts/*'
'!layouts/CNAME'
'!layouts/.htpasswd'
'!layouts/.htaccess'
])
# Watch Files For Changes
gulp.task 'watch', ->
browserSync { proxy: 'megamac.local'}
gulp.watch 'assets/javascripts/**/*.coffee', ['scripts', reload]
gulp.watch 'assets/stylesheets/**/*.scss', ['styles']
gulp.watch 'assets/jade/**/*.jade', ['views', reload]
# Tasks
gulp.task 'default', [ 'clean', 'styles', 'scripts', 'views' ]
gulp.task 'serve', [ 'default', 'watch' ]
# Deploy our build to GitHub pages
gulp.task 'deploy', ['default'], ->
gulp.src 'layouts/**/*'
.pipe deploy()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment