88 lines
2.2 KiB
JavaScript
88 lines
2.2 KiB
JavaScript
var gulp = require('gulp');
|
|
var gutil = require('gulp-util');
|
|
var gless = require('gulp-less');
|
|
var gclint = require('gulp-coffeelint');
|
|
var gcoffee = require('gulp-coffee');
|
|
var _ = require('lodash');
|
|
var lr = require('tiny-lr');
|
|
var static = require('node-static');
|
|
var exec = require('child_process').exec;
|
|
|
|
var server = lr();
|
|
|
|
var config = {
|
|
paths: {
|
|
less: {
|
|
src: 'src/less/**/*.less',
|
|
dest: 'public/css'
|
|
},
|
|
coffee: {
|
|
src: 'src/coffee/**/*.coffee',
|
|
dest: 'public/js'
|
|
}
|
|
},
|
|
webport: 8080,
|
|
lrport: 35729
|
|
};
|
|
|
|
gulp.task('less', function() {
|
|
gulp.src(config.paths.less.src)
|
|
.pipe(gless({ sourceMap: true }))
|
|
.pipe(gulp.dest(config.paths.less.dest));
|
|
});
|
|
|
|
gulp.task('lint', function() {
|
|
gulp.src(config.paths.coffee.src)
|
|
.pipe(gclint());
|
|
});
|
|
|
|
gulp.task('coffee', ['lint'], function() {
|
|
gulp.src(config.paths.coffee.src)
|
|
.pipe(gcoffee({ bare: true }))
|
|
.pipe(gulp.dest(config.paths.coffee.dest));
|
|
});
|
|
|
|
gulp.task('tiny', function(next) {
|
|
server.listen(config.lrport, function(err) {
|
|
if (err) {
|
|
return console.error(err);
|
|
}
|
|
gutil.log('Server listening on port: ', config.lrport);
|
|
next();
|
|
});
|
|
});
|
|
|
|
gulp.task('server', function(next) {
|
|
var file = new static.Server('./public', { cache: false });
|
|
require('http').createServer(function(req, res) {
|
|
req.addListener('end', function() {
|
|
file.serve(req, res);
|
|
}).resume();
|
|
}).listen(config.webport, function() {
|
|
gutil.log('Server listening on port: ', config.webport);
|
|
next();
|
|
});
|
|
});
|
|
|
|
gulp.task('open', function(next) {
|
|
exec('open http://localhost:' + config.webport, function() {
|
|
next();
|
|
});
|
|
})
|
|
|
|
gulp.task('watch', ['tiny'], function () {
|
|
gulp.watch(config.paths.less.src, ['less']);
|
|
gulp.watch(config.paths.coffee.src, ['coffee']);
|
|
|
|
gulp.watch(['./public/**/*', '!./public/vendor/**/*'], function(e) {
|
|
gutil.log('Notifying browser of changes');
|
|
server.changed({
|
|
body: {
|
|
files: [e.path]
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
gulp.task('default', ['less', 'coffee', 'server', 'watch']);
|