forked from 3dmol/3Dmol.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
83 lines (72 loc) · 2.45 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
const { series, parallel, src, watch, dest} = require('gulp');
jshint = require('gulp-jshint'),
concat = require('gulp-concat'),
uglify = require('gulp-terser');
rename = require('gulp-rename');
merge = require('gulp-merge');
shell = require('gulp-shell');
del = require('del');
jsdoc = require('gulp-jsdoc3');
coresrc = ['3Dmol/3dmol.js','3Dmol/WebGL/math.js','3Dmol/WebGL/shapes.js','3Dmol/WebGL/core.js','3Dmol/WebGL/**.js','3Dmol/**.js','!3Dmol/SurfaceWorker.js','3Dmol/SurfaceWorker.js'];
extsrc = ['js/mmtf.js','node_modules/pako/dist/pako_inflate.js','node_modules/netcdfjs/dist/netcdfjs.js'];
jqsrc = ['node_modules/jquery/dist/jquery.js'];
function clean(cb) {
del('build/*.js');
del(['doc/*']);
cb();
}
function doc(cb) {
var config = require('./jsdoc.conf.json');
return src(['3Dmol/*.js', 'doc.md'], {read: false})
.pipe(jsdoc(config, cb));
}
function check() {
return src(coresrc).pipe(jshint({latedef:'nofunc', esversion:6, laxbreak:true, undef:true, unused:true,
globals: {"$3Dmol":true,
'console':true, //set in webworker
'document':false,
'$':false,
'window':false,
'self': true, //for passing data to workers?
'module':false,
'Blob':false,
'pako':false,
'netcdfjs':false,
'XMLHttpRequest':false,
'alert':false,
'setTimeout':false,
'clearTimeout':false,
'setInterval':false,
'clearInterval': false,
'Worker': false,
'MMTF': false,
'TextDecoder': false,
'define':false}}))
.pipe(jshint.reporter('default'));
}
function domin(srcs, name) {
return src(srcs).pipe(concat(name+'.js'))
.pipe(dest('build'))
.pipe(rename(name+'-min.js'))
.pipe(uglify().on('error', function(e) { console.log(e);}))
.pipe(dest('build'));
}
function minify() {
return domin(jqsrc.concat(extsrc).concat(coresrc), '3Dmol');
}
function minify_nojquery() {
return domin(extsrc.concat(coresrc), '3Dmol-nojquery');
}
function tests(cb) {
src('tests/auto/generate_tests.py',{read:false}).pipe(shell('python3 <%= file.path %>'));
cb();
}
function build_quick() { //nomin
return src(jqsrc.concat(extsrc).concat(coresrc)).pipe(concat('3Dmol.js')).pipe(dest('build'));
}
exports.build = series(check, parallel(tests,
minify, minify_nojquery));
exports.default = series(clean, parallel(exports.build, doc));
exports.build_quick = parallel(build_quick,tests);
exports.clean = clean;
exports.doc = doc;