Skip to content

Instantly share code, notes, and snippets.

@wtnabe
Last active August 29, 2015 14:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wtnabe/7a26282510384f40a76e to your computer and use it in GitHub Desktop.
Save wtnabe/7a26282510384f40a76e to your computer and use it in GitHub Desktop.
gulp + coffee + sass + watch + minify + cache buster sample
/node_modules
*.map
/bower_components
gulp = require 'gulp'
watch = require 'gulp-watch'
sass = require 'gulp-sass'
coffee = require 'gulp-coffee'
plumber = require 'gulp-plumber'
sourcemaps = require 'gulp-sourcemaps'
uglify = require 'gulp-uglify'
minifycss = require 'gulp-minify-css'
concat = require 'gulp-concat'
buster = require 'gulp-buster'
rename = require 'gulp-rename'
del = require 'del'
path = require 'path'
bower = require 'main-bower-files'
src =
coffee: 'src/**/*.coffee',
scss: 'src/**/*.scss'
dest =
css: 'stylesheets/application.css',
js: 'javascripts/application.js',
css_dir: 'stylesheets',
js_dir: 'javascripts'
bower_dest =
eot: 'fonts',
svg: 'fonts',
ttf: 'fonts',
woff: 'fonts',
js: 'javascripts/lib',
css: 'stylesheets/lib',
scss: 'src'
gulp.task 'build', ['bower:install', 'rename']
gulp.task 'bower:install', ['clean'], ->
bower().forEach (file)->
gulp.src file
.pipe gulp.dest bower_dest[(path.extname file).replace(/^\./, '')]
gulp.task 'rename', ['buster'], ->
busters = require './busters.json'
gulp.src dest.js
.pipe rename "application." + busters[dest.js] + ".js"
.pipe gulp.dest dest.js_dir
gulp.src dest.css
.pipe rename "application." + busters[dest.css] + ".css"
.pipe gulp.dest dest.css_dir
gulp.task 'buster', ['uglifyjs', 'minify-css'], ->
gulp.src [dest.js, dest.css]
.pipe buster('busters.json')
.pipe gulp.dest '.'
gulp.task 'uglifyjs', ['coffee'], ->
gulp.src [bower_dest.js + '/*.js', dest.js_dir + '/*.js']
.pipe plumber()
.pipe uglify preserveComments: 'some'
.pipe concat 'application.js'
.pipe gulp.dest dest.js_dir
gulp.task 'minify-css', ['concat-css'], ->
gulp.src dest.css
.pipe minifycss()
.pipe gulp.dest dest.css_dir
gulp.task 'concat-css', ['sass'], ->
gulp.src [bower_dest.css + '/*.css', dest.css_dir + '/*.css']
.pipe plumber()
.pipe concat 'application.css'
.pipe gulp.dest dest.css_dir
gulp.task 'clean', ->
del.sync [dest.css_dir, dest.js_dir]
gulp.task 'compile', ['coffee', 'sass']
gulp.task 'watch', ['compile'], ->
gulp.watch src.coffee, ['coffee']
gulp.watch src.scss, ['sass']
gulp.task 'coffee', ->
gulp.src src.coffee
.pipe plumber()
.pipe sourcemaps.init()
.pipe coffee {bare: true}
.pipe sourcemaps.write './maps'
.pipe gulp.dest dest.js_dir
gulp.task 'sass', ->
gulp.src src.scss
.pipe plumber()
.pipe sass({sourcemap: true})
.pipe gulp.dest dest.css_dir
{
"devDependencies": {
"grunt": "*",
"gulp": "*",
"coffee-script": "*",
"gulp-coffee": "*",
"gulp-sass": "*",
"gulp-watch": "*",
"gulp-plumber": "*",
"gulp-sourcemaps": "*",
"gulp-uglify": "*",
"gulp-minify-css": "*",
"gulp-concat": "*",
"gulp-buster": "*",
"gulp-rename": "*",
"del": "*",
"main-bower-files": "*"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment