Newer
Older
const fs = require('fs');
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');
const mkdirp = require('mkdirp');
const cache = new Cache();
function createLogDir() {
const logDirPath = 'build/logs';
mkdirp(logDirPath, (err) => {
if(err) console.error(err);
// 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
João Victor Tozatti Risso
committed
});
João Victor Tozatti Risso
committed
gulp.task('build', ['compile'], () => {
var filesToCopy = [ 'config.json', 'package.json' ];
// copy configuration file to build directory
João Victor Tozatti Risso
committed
gulp.src(filesToCopy)
gulp.task('docco', () => {
gulp.src('./src/**/*.js')
.pipe(docco())
.pipe(gulp.dest('./docs'));
gulp.task('pre-test', () => {
return gulp.src(['build/**/*.js', '!build/{test,test/**}'])
.pipe(istanbul())
.pipe(istanbul.hookRequire());
});
gulp.task('test', ['pre-test'], () => {
João Victor Tozatti Risso
committed
gulp.src(['test/**/*.js'], {read: false})
.pipe(mocha({timeout: 60000}))
.pipe(istanbul.enforceThresholds({
thresholds: {
global: {
statements: 80,
lines: 80,
functions: 80
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');
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']);