Skip to content

Instantly share code, notes, and snippets.

@psi-4ward
Created October 27, 2014 14:15
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 psi-4ward/88ee04fb8b388e6b96b6 to your computer and use it in GitHub Desktop.
Save psi-4ward/88ee04fb8b388e6b96b6 to your computer and use it in GitHub Desktop.
gulpfile.js
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