Skip to content
Snippets Groups Projects
gulpfile.babel.js 2.67 KiB
Newer Older
require('babel-core/register');

const fs = require('fs');

const gulp = require('gulp');
const babel = require('gulp-babel');
const eslint = require('gulp-eslint');

const mocha = require('gulp-mocha');

const istanbul = require('gulp-istanbul');

const nodemon = require('gulp-nodemon');

const Cache = require('gulp-file-cache');

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

const mkdirp = require('mkdirp');

const cache = new Cache();
function createLogDir() {
    const logDirPath = 'build/logs';
    mkdirp(logDirPath, (err) => {
        if(err) console.error(err);
gulp.task('lint', () => {
    // run ESLint
    gulp.src('src/**/*.js')
    .pipe(eslint())
    .pipe(eslint.format());
})

/**
* Compile source files
*/
gulp.task('compile', ['lint'], () => {

    // 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
gulp.task('build', ['compile'], () => {
    var filesToCopy = [ 'config.json', 'package.json' ];
    // copy configuration file to build directory
    .pipe(gulp.dest('build'));
Vytor Calixto's avatar
Vytor Calixto committed
gulp.task('docco', () => {
    gulp.src('./src/**/*.js')
        .pipe(docco())
        .pipe(gulp.dest('./docs'));
Vytor Calixto's avatar
Vytor Calixto committed
});

Vytor Calixto's avatar
Vytor Calixto committed
gulp.task('doc', ['docco']);

gulp.task('pre-test', () => {
    return gulp.src(['build/**/*.js', '!build/{test,test/**}'])
        .pipe(istanbul())
        .pipe(istanbul.hookRequire());
});

gulp.task('test', ['pre-test'], () => {
    process.chdir('build');
    .pipe(mocha({timeout: 60000}))
    .pipe(istanbul.writeReports())
    .pipe(istanbul.enforceThresholds({
        thresholds: {
            global: {
                statements: 80,
        }
    }))
    .on('error', () => {
        process.exit(1);
    .on('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', () => {
    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']);