blob: 860376a7be046d43f4c4d7522e5b48dd86cee0a8 [file] [log] [blame]
var gulp = require('gulp'),
// Pulls in any Gulp-related metadata
pkg = require('./package.json'),
// Use $ to invoke Gulp plugins
$ = require('gulp-load-plugins')(),
// All non-Gulp modules here
del = require('del');
// Define the source and distribution directories
var srcDir = './assets';
var distDir = './static';
// Define asset sources
var SRC = {
js: srcDir + '/js/**/*.js',
css: srcDir + '/css/**/*.css',
sass: srcDir + '/sass/**/*.scss',
fonts: srcDir + '/fonts/**/*',
images: srcDir + '/img/**/*',
javadoc: './api/**/*'
}
// Define asset distribution destination
var DIST = {
css: distDir + '/css',
js: distDir + '/js',
fonts: distDir + '/fonts',
images: distDir + '/img',
javadoc: './public',
all: distDir
}
// JavaScript assets
gulp.task('js', function() {
return gulp.src(SRC.js)
.pipe($.uglify().on('error', function(err) { console.log(err); }))
.pipe($.concat('app.min.js'))
.pipe(gulp.dest(DIST.js));
});
gulp.task('js:watch', function() {
gulp.watch(SRC.js, ['js']);
});
// CSS assets
gulp.task('css', function() {
return gulp.src(SRC.css)
.pipe(gulp.dest(DIST.css));
});
gulp.task('css:watch', function() {
return gulp.watch(SRC.css, ['css']);
});
// Sass assets
gulp.task('sass', function() {
gulp.src(SRC.sass)
.pipe($.sass().on('error', function(err) { console.log(err); }))
.pipe($.cleanCss())
.pipe($.concat('style.min.css'))
.pipe(gulp.dest(DIST.css));
});
gulp.task('sass:watch', function() {
gulp.watch(SRC.sass, ['sass']);
});
// Javadoc
gulp.task('javadoc', function() {
gulp.src(SRC.javadoc)
.pipe(gulp.dest(DIST.javadoc));
});
// Fonts
gulp.task('fonts', function() {
gulp.src(SRC.fonts)
.pipe(gulp.dest(DIST.fonts));
});
// Images
gulp.task('images', function() {
gulp.src(SRC.images)
.pipe(gulp.dest(DIST.images));
});
gulp.task('images:watch', function() {
gulp.watch(SRC.images, ['images']);
});
// One-time build; doesn't watch for changes
gulp.task('build', ['js', 'sass', 'css', 'javadoc', 'fonts', 'images']);
// Delete static folder
gulp.task('clean', function() {
del(DIST.all);
});
// Run in development (i.e. watch) mode
gulp.task('dev', ['build', 'js:watch', 'sass:watch', 'css:watch', 'images:watch']);
// Help => list tasks
gulp.task('help', $.taskListing.withFilters(null, 'help'));
// Default
gulp.task('default', ['help']);