Skip to content

Instantly share code, notes, and snippets.

@chrisjlee
Forked from mlouro/gulpfile.js
Created July 31, 2014 15:03
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 chrisjlee/30fa785764777029ca1f to your computer and use it in GitHub Desktop.
Save chrisjlee/30fa785764777029ca1f to your computer and use it in GitHub Desktop.
"use strict";
/* global console */
var gulp = require('gulp');
var gutil = require('gulp-util');
var browserify = require('gulp-browserify');
var jshint = require('gulp-jshint');
var watch = require('gulp-watch');
var stylish = require('jshint-stylish');
var refresh = require('gulp-livereload');
var sass = require('gulp-sass');
// livereload
var lr = require('tiny-lr');
var server = lr();
// File sources
var sources = {
scripts: [
'./src/*.js',
'./src/apps/**/*.js',
'./src/apps/**/*.jsx'
],
css: './src/scss/**/*.scss',
sass: './src/scss/app.scss',
statics: [
'./src/*.html',
'./src/static/**/*',
],
browserify: './src/app.js'
};
// Build destination
var buildDir = './www/';
// Tasks
// * build JavaScript (browserify)
// * copy static files
// * lint JavaScript
// * build sass
// * live-reload server
var tasks = {
scripts: function () {
gulp.src(sources.browserify)
.pipe(browserify({
debug : !gutil.env.production
}))
.pipe(gulp.dest(buildDir))
.pipe(refresh(server));
},
statics: function() {
gulp.src(sources.statics)
.pipe(gulp.dest(buildDir))
.pipe(refresh(server));
},
lint: function() {
var files = sources.scripts;
files.push('./gulpfile.js');
gulp.src(files)
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter(stylish));
},
sass: function() {
gulp.src(sources.sass)
.pipe(sass())
.pipe(gulp.dest(buildDir + 'css/'))
.pipe(refresh(server));
},
livereload: function() {
server.listen(35729, function(err){
if(err) {
return console.log(err);
}
});
}
};
// --------------------------
// Register our tasks
// --------------------------
// default
gulp.task('default', function() {
gulp.run('lint:js', 'build:js', 'copy:static');
});
// gulp task setup
gulp.task('build:js', tasks.scripts);
gulp.task('build:sass', tasks.sass);
gulp.task('copy:static', tasks.statics);
gulp.task('lint:js', tasks.lint);
gulp.task('livereload', tasks.livereload);
// development watch & livereload
gulp.task('dev', function() {
// start the livereload server
gulp.run('livereload');
// watch for js changes
gulp.watch(sources.scripts, function(event) {
gulp.run('lint:js', 'build:js');
});
gulp.watch(sources.statics, function(event) {
gulp.run('copy:static');
});
gulp.watch(sources.css, function(event) {
gulp.run('build:sass');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment