Skip to content
Snippets Groups Projects
gulpfile.babel.js 2.23 KiB
Newer Older
const fs = require('fs');

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');

Vytor Calixto's avatar
Vytor Calixto committed
const jsdoc = require('gulp-jsdoc3');

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}`);
            });
        }
    });
}

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']);
Vytor Calixto's avatar
Vytor Calixto committed
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())
    .once('error', () => {
    .once('end', () => {
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');
gulp.task('run', () => {
Lucas Gabriel Lima's avatar
Lucas Gabriel Lima committed
  nodemon({
    script: 'server.js',
    ignore: ["test/test.js", "gulpfile.babel.js"],
    ext: 'js html json',
Lucas Gabriel Lima's avatar
Lucas Gabriel Lima committed
    env: { 'NODE_ENV': 'development' }
gulp.task('default', ['run']);