Skip to content

Instantly share code, notes, and snippets.

@destroytoday
Created February 23, 2014 22:16
Show Gist options
  • Save destroytoday/9178149 to your computer and use it in GitHub Desktop.
Save destroytoday/9178149 to your computer and use it in GitHub Desktop.
'use strict';
var gulp = require('gulp'),
util = require('gulp-util'),
gulpif = require('gulp-if'),
coffee = require('gulp-coffee'),
sass = require('gulp-ruby-sass'),
uglify = require('gulp-uglify'),
browserify = require('gulp-browserify'),
livereload = require('gulp-livereload');
var log = util.log,
env = util.env;
var paths = {
src: 'app',
dest: 'public',
scripts: {
src: ['app/scripts/**/*.coffee'],
dest: 'public/scripts'
},
styles: {
includePaths: ['app/styles/includes'],
src: ['app/styles/**/*.sass'],
dest: 'public/styles'
},
livereload: [
'public/**/*.html',
'public/**/*.js',
'public/**/*.css'
]
};
gulp.task('scripts', function() {
return gulp.src(paths.scripts.src)
.pipe(coffee())
.pipe(browserify({
insertGlobals : false,
extensions: ['.js'],
debug: !env.production
}))
.pipe(gulpif(env.production, uglify({
mangle: {
except: ['require', 'export', '$super']
}
})))
.pipe(gulp.dest(paths.scripts.dest));
});
gulp.task('styles', function () {
return gulp.src(paths.styles.src)
.pipe(sass({
style: env.production ? 'compressed' : 'expanded',
loadPath: paths.styles.includePaths,
quiet: true
}))
.pipe(gulp.dest(paths.styles.dest));
});
gulp.task('watch', function(){
var server = livereload();
gulp.watch(paths.scripts.src, ['scripts']);
gulp.watch(paths.styles.src, ['styles']);
gulp.watch(paths.livereload).on('change', function(file) {
server.changed(file.path);
});
});
gulp.task('default', ['scripts', 'styles', 'watch']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment