This repository has been archived by the owner on Jul 31, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
gulpfile.babel.js
124 lines (112 loc) · 2.3 KB
/
gulpfile.babel.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
'use strict';
import dotenv from 'dotenv';
import gulp from 'gulp';
import del from 'del';
import gulpLoadPlugins from 'gulp-load-plugins';
import browserSync from 'browser-sync';
const $ = gulpLoadPlugins();
const SERVER = 'dist/server';
const PORT = process.env.PORT || 5000;
const ENV = process.env.NODE_ENV || 'development';
browserSync.create();
dotenv.config({silent: true});
/**
* Task jshint
* Use js lint
*/
gulp.task('jshint', ['jscs'], () => {
return gulp.src([
'server/**/*.js',
'gulfile.js',
])
.pipe($.jshint('.jshintrc'))
.pipe($.jshint.reporter('default'))
.pipe($.jshint.reporter('fail'));
});
/**
* Task jscs
* Use js cs lint
*/
gulp.task('jscs', () => {
return gulp.src([
'server/**/*.js',
'gulfile.js',
])
.pipe($.jscs('.jscsrc'))
.pipe($.jscs.reporter())
.pipe($.jscs.reporter('fail'));
});
/**
* Task reload
* reload the browser after executing default
*/
gulp.task('reload', ['default'], () => {
browserSync.reload();
});
/**
* Task serve
* launch an express server
*/
gulp.task('serve', () => {
let server;
if (ENV === 'production') {
server = $.liveServer(SERVER + '/bin/www', undefined, false);
server.start();
} else {
server = $.liveServer(SERVER + '/bin/www');
server.start();
}
});
/**
* Task clean
* Remove dist directory
*/
gulp.task('clean', () => {
return del([
SERVER,
]);
});
/**
* Task pre-test
* Runs istanbul to get all files to cover
*/
gulp.task('pre-test', () => {
return gulp.src([
'server/**/*.js',
'!server/tests/**/*.js',
])
.pipe($.istanbul())
.pipe($.istanbul.hookRequire());
});
/**
* Task test
* Build the project and test for it's consistency
*/
gulp.task('test', ['jscs', 'pre-test'], () => {
return gulp.src('server/tests/**/*.js')
.pipe($.mocha())
.pipe($.istanbul.writeReports())
.pipe($.istanbul.enforceThresholds({
thresholds: { global: 70 }
}));
});
/**
* Task coverage
* Sends coverage tests to coveralls
*/
gulp.task('coverage', ['test'], () => {
if (process.env.NODE_ENV === 'test-ci') {
return gulp.src('coverage/**/lcov.info')
.pipe($.coveralls());
}
});
/**
* Task build
* Build the project
*/
gulp.task('build', ['clean'], () => {
return gulp.src([
'server/**/*'
])
.pipe(gulp.dest(SERVER));
});