-
Vytor Calixto authoredVytor Calixto authored
gulpfile.babel.js 1.77 KiB
const gulp = require('gulp');
const babel = require('gulp-babel');
const eslint = require('gulp-eslint');
const mocha = require('gulp-mocha');
const nodemon = require('gulp-nodemon');
const Cache = require('gulp-file-cache');
const docco = require('gulp-docco');
const cache = new Cache();
/**
* Compile source files
*/
function compile() {
// run ESLint
gulp.src('src/**/*.js')
.pipe(eslint())
.pipe(eslint.format());
// compile source to ES5
gulp.src('src/**/*.js')
.pipe(cache.filter()) // cache source files
.pipe(babel()) // compile only modified files
.pipe(cache.cache()) // cache compiled files
.pipe(gulp.dest('build')); // move compiled files to build directory
// copy configuration file to build directory
gulp.src('config.json')
.pipe(gulp.dest('build'));
}
gulp.task('build', compile);
gulp.task('docco', () => {
gulp.src('./src/**/*.js')
.pipe(docco())
.pipe(gulp.dest('./docs'));
});
gulp.task('doc', ['docco']);
gulp.task('test', () => {
gulp.src('test/test.js', {read: false})
.pipe(mocha())
.once('error', () => {
process.exit(1);
})
.once('end', () => {
process.exit();
});
});
gulp.task('watch', [], () => {
console.log('Watching source directory for changes');
compile();
gulp.watch('src/**/*.js').on('change', () => {
console.log('Recompiling source');
compile();
console.log('Source recompilation done')
});
});
gulp.task('run', () => {
process.chdir('build');
nodemon({
script: 'server.js',
tasks: ['watch'],
ignore: ["test/test.js", "gulpfile.babel.js"],
ext: 'js html json',
env: { 'NODE_ENV': 'development' }
});
});
gulp.task('default', ['run']);