Created
October 27, 2014 14:15
-
-
Save psi-4ward/88ee04fb8b388e6b96b6 to your computer and use it in GitHub Desktop.
gulpfile.js
This file contains 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
var config = require('./gulp/config.js'); | |
var commander = require('commander'); | |
var gulp = require('gulp'); | |
var runSequence = require('run-sequence'); | |
var gutil = require('./node_modules/gulp/node_modules/gulp-util/index.js'); | |
var del = require('del'); | |
var glob = require('glob'); | |
var open = require('open'); | |
// load all tasks | |
glob.sync("gulp/tasks/**/*.js").forEach(function(file) { | |
require('./' + file); | |
}); | |
commander | |
.usage('task [task task ...] [options]') | |
.option('-T, --tasks', 'Show gulp tasks') | |
.option('--port <port>', 'Start the webserver on sepcifc port, default 9000', 9000) | |
.on('--help', function() { | |
console.log(' Common tasks'); | |
console.log(' '); | |
console.log(' build Build the app'); | |
console.log(' server Only start a webserver'); | |
console.log(' dev build without minify and start server with livereload'); | |
console.log(' '); | |
}) | |
.parse(process.argv); | |
/** generic build task **/ | |
gulp.task('build', function(cb) { | |
runSequence('clean', config.buildTasks, config.buildTasksProd, cb); | |
}); | |
/** server task **/ | |
gulp.task('server', ['staticFileServer']); | |
/** dev task **/ | |
gulp.task('dev', function(cb) { | |
runSequence(config.buildTasks, ['staticFileServer', 'livereload', 'watch'/*, 'openBrowser'*/], cb); | |
}); | |
gulp.task('default', function() { | |
commander.help(); | |
}); | |
gulp.task('openBrowser', function(cb) { | |
open("http://localhost:" + commander.port); | |
cb(); | |
}); | |
/* remove build folder */ | |
gulp.task('clean', function(next) { | |
del([config.dist], next); | |
}); | |
/* watchers */ | |
gulp.task('watch', function() { | |
config._watchers.forEach(function(w) { | |
gulp.watch(w.src, w.tasks); | |
}); | |
}); | |
/* Static files server */ | |
gulp.task('staticFileServer', function(next) { | |
var express = require('express'); | |
var app = express(); | |
app.use(require('connect-livereload')()); | |
app.use(express.static(config.dist)); | |
app.listen(commander.port, function() { | |
gutil.log(gutil.colors.bold.cyan('Server listening on port: ' + commander.port)); | |
next(); | |
}); | |
}); | |
/* Livereload */ | |
gulp.task('livereload', function() { | |
var livereload = require('gulp-livereload'); | |
livereload.listen(); | |
gulp.watch([config.dist + '**/*']).on('change', livereload.changed); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment