-
Notifications
You must be signed in to change notification settings - Fork 145
/
gulpfile.js
79 lines (69 loc) · 1.99 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
'use strict';
var gulp = require('gulp');
var browserify = require('gulp-browserify');
var uglify = require('gulp-uglify');
var rename = require('gulp-rename');
var replace = require('gulp-replace');
var coveralls = require('gulp-coveralls');
var istanbul = require('gulp-istanbul');
var mocha = require('gulp-mocha');
var paths = {
index: './index.js',
tests: './test/**/*.js'
};
function preTest(src) {
return gulp.src(src)
.pipe(istanbul())
.pipe(istanbul.hookRequire());
}
function test(src){
return gulp.src(src)
.pipe(mocha())
.pipe(istanbul.writeReports());
}
function testKarma(done){
if (+process.version.split('.')[0].slice(1) < 8) {
console.log('karma does not support Node.js < 8, skipping');
return done();
}
new (require('karma').Server)({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, done).start();
}
gulp.task('dist', function(){
return Promise.all([
gulp.src([paths.index])
.pipe(browserify({
insertGlobals : true,
debug: true,
standalone: 'objectHash'
}))
// Hack: See https://github.com/puleos/object-hash/issues/71.
// It's probably better to replace gulp-browserify altogether instead.
.pipe(replace(/_global.crypto/g, 'false'))
.pipe(rename('object_hash.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist')),
gulp.src([paths.tests])
// Hack: browserify seems to not support async-await.
// It's probably better to replace gulp-browserify altogether instead.
.pipe(replace(/async function/g, 'function'))
.pipe(browserify())
.pipe(rename('object_hash_test.js'))
.pipe(gulp.dest('./dist'))
]);
});
gulp.task('pre-test', function() {
return preTest([paths.index]);
});
gulp.task('test', gulp.series('pre-test', function() {
return test([paths.tests]);
}));
gulp.task('karma', function(done) {
testKarma(done);
});
gulp.task('coveralls', function() {
return gulp.src('coverage/**/lcov.info')
.pipe(coveralls());
});