-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgulpfile.js
65 lines (54 loc) · 1.53 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
const gulp = require('gulp');
const $ = require('gulp-load-plugins')();
const child_process = require('child_process');
// Sends a notification when JSHint fails
function jshintNotify(file) {
if (!file.jshint) {
return;
}
return file.jshint.success ? false : 'JSHint failed';
}
// Sends a notification when JSCS fails
function jscsNotify(file) {
if (!file.jscs) {
return;
}
return file.jscs.success ? false : 'JSCS failed';
}
function createLintTask(taskName, files) {
gulp.task(taskName, function() {
return gulp.src(files)
.pipe($.plumber())
.pipe($.jshint())
.pipe($.jshint.reporter('jshint-stylish'))
.pipe($.notify(jshintNotify))
.pipe($.jscs())
.pipe($.jscs.reporter())
.pipe($.notify(jscsNotify))
.pipe($.jshint.reporter('fail'));
});
}
// Lint our source code
createLintTask('lint-src', ['src/**/*.js']);
// Lint our test code
createLintTask('lint-test', ['test/**/*.js']);
// Lint all the code
gulp.task('lint', ['lint-src', 'lint-test']);
// Build API docs
gulp.task('apidocs', function() {
var args = [
'./node_modules/jsdoc/jsdoc.js',
'src',
'-c',
'./jsdoc-conf.json'
];
var jsdoc = child_process.spawn('node', args);
jsdoc.stdout.on('data', function(data) {
process.stdout.write(data);
});
jsdoc.stderr.on('data', function(data) {
process.stdout.write(data);
});
});
// An alias of lint
gulp.task('default', ['lint']);