Newer
Older
const fs = require('fs');
const eslint = require('gulp-eslint');
const mocha = require('gulp-mocha');
const nodemon = require('gulp-nodemon');
const Cache = require('gulp-file-cache');
const cache = new Cache();
function createLogDir() {
const logDirPath = 'build/logs';
fs.access(logDirPath, fs.F_OK, (err) => {
if (err) {
console.info(`Logs directory not found, creating it.`);
fs.mkdir(logDirPath, 0o700, (dirErr) => {
console.error(`Failed to create logs directory.\n\tError: ${dirErr}`);
});
}
});
}
/**
* Compile source files
*/
gulp.task('compile', () => {
createLogDir();
// 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('doc', (cb) => {
let config = require('./jsdoc.json');
gulp.src(['README.md', './src/**/*.js'], {read: false})
.pipe(jsdoc(config, cb));
});
gulp.task('test', ['build'], () => {
gulp.src('test/test.js', {read: false})
.pipe(mocha())
gulp.task('watch', ['compile'], () => {
console.log('Watching source directory for changes');
gulp.watch('src/**/*.js').on('change', () => {
console.log('Recompiling source');
gulp.start('compile');
console.log('Source recompilation done');
process.chdir('build');
ignore: ["test/test.js", "gulpfile.babel.js"],
ext: 'js html json',
gulp.task('default', ['run']);