/
gulpfile.js
94 lines (79 loc) · 1.86 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'use strict';
require("babel-core/register");
const
$ = require('gulp-load-plugins')({
pattern: ['gulp-*', 'gulp.*'],
replaceString: /\bgulp[\-.]/
}),
babel = require('babel-core/register'),
isparta = require('isparta'),
del = require('del'),
gulp = require('gulp'),
runSequence = require('run-sequence');
const srcFiles = 'src/**/*.{es6,js}';
const testFiles = 'test/**/*.{es6,js}';
const handleErrors = function() {
const args = Array.prototype.slice.call(arguments);
$.notify.onError({
message: '<%= error %>',
title: 'Compile Error'
})
.apply(this, args);
this.emit('end');
};
gulp.task('clean', () =>
del(['lib/**'])
);
gulp.task('lint', () =>
gulp.src([srcFiles, '!node_modules/**', '!coverage/**'])
.pipe($.eslint())
.pipe($.eslint.format())
.pipe($.eslint.failAfterError())
);
gulp.task('babel', () =>
gulp.src(srcFiles)
.pipe($.babel({
presets: ['es2015']
}))
.on('error', handleErrors)
.pipe(gulp.dest('lib'))
);
gulp.task('test:pre-test', () =>
gulp.src([srcFiles])
.pipe($.istanbul({
includeUntested: true,
instrumenter: isparta.Instrumenter
}))
.pipe($.istanbul.hookRequire())
);
gulp.task('test:all', ['babel'], () =>
gulp.src(['test/**/*.js'])
.pipe($.mocha({
reporter: 'spec',
compilers: {
js: babel
}
}))
.on('error', handleErrors)
);
gulp.task('test:coverage', () =>
gulp.src([testFiles])
.on('error', handleErrors)
.pipe($.istanbul.writeReports())
);
gulp.task('watch', [], () => {
$.watch(['src/**', 'test/**'], () => {
runSequence(['babel', 'test:all']);
});
});
const buildTasks = [
'babel'
];
const testTasks = [
'test:pre-test',
'test:all',
'test:coverage'
];
gulp.task('build', () => runSequence('clean', buildTasks));
gulp.task('test', testTasks);
gulp.task('default', () => runSequence('clean', buildTasks.concat('watch'), 'test'));