-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
136 lines (114 loc) · 3.15 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
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
125
126
127
128
129
130
131
132
133
134
135
136
"use strict";
var _ = require('lodash');
var fs = require('fs');
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var rename = require('gulp-rename');
var nodeResolve = require('resolve');
var buffer = require('vinyl-buffer');
var browserSync = require('browser-sync');
var reload = browserSync.reload;
var Server = require('karma').Server;
var production = (process.env.NODE_ENV === 'production');
gulp.task('build-vendor', function () {
var b = browserify({
debug: !production
});
// do the similar thing, but for npm-managed modules.
// resolve path using 'resolve' module
getNPMPackageIds().forEach(function (id) {
b.require(nodeResolve.sync(id), { expose: id });
});
var stream = b
.bundle()
.on('error', function(err){
// print the error (can replace with gulp-util)
console.log(err.message);
// end this stream
this.emit('end');
})
.pipe(source('vendor.js'));
// pipe additional tasks here (for eg: minifying / uglifying, etc)
// remember to turn off name-mangling if needed when uglifying
stream.pipe(gulp.dest('./dist'));
return stream;
});
gulp.task('build-tour', function () {
var b = browserify([
'src/main.js',
'src/vueExample.js'
], {
// generate source maps in non-production environment
debug: !production
});
getNPMPackageIds().forEach(function (id) {
b.external(id);
});
var stream = b.bundle().pipe(source('kognijs.tour.js'));
stream.pipe(gulp.dest('./dist'));
return stream;
});
gulp.task('browser-sync', function() {
browserSync({
open: false,
server: {
baseDir: ["examples", "dist", "test"],
index: "tour.html"
},
});
});
gulp.task('serve', gulp.series('build-vendor', 'build-tour', 'browser-sync', function () {
gulp.watch('src/**/*.js', ['build-tour', reload]);
gulp.watch('examples/*.html', reload);
gulp.watch('tests/*.html', reload);
}));
gulp.task('test-travis', function (done) {
new Server({
configFile: __dirname + '/karma.travis.conf.js',
singleRun: true
}, function(){done();}).start();
});
gulp.task('test', function (done) {
new Server({
configFile: __dirname + '/karma.conf.js',
singleRun: true
}, function(){done();}).start();
});
gulp.task('build-redist-minified', function() {
return browserify([
'src/main.js'
], {
debug: !production,
})
.bundle()
.pipe(source('kognijs.min.js'))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('redist/'));
});
gulp.task('build-redist', gulp.series('build-redist-minified', function() {
return browserify([
'src/main.js'
], {
debug: !production,
})
.bundle()
.pipe(source('kognijs.js'))
.pipe(buffer())
.pipe(gulp.dest('redist/'));
}));
/**
* Helper function(s)
*/
function getNPMPackageIds() {
var packageManifest = {};
try {
packageManifest = require('./package.json');
} catch (e) {
// does not have a package.json manifest
}
return _.keys(packageManifest.dependencies) || [];
}
gulp.task('default', gulp.parallel('serve'));