forked from shenfe/Velocity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild_js.js
50 lines (42 loc) · 1.53 KB
/
build_js.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
var opts = {
format: 'globals',
exportVar: 'velocity',
// optimize: 'size',
output: 'source'
};
var fs = require('fs');
require('shelljs/global');
var peg = require('pegjs');
var pegjs_dev_file = './src/javascript/velocity.pegjs';
var js_file = './src/javascript/velocity.js';
var base_file = './src/javascript/base.js';
var randStr = 'func_' + Date.now();
var moduleStr = `
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = ${randStr};
}
} else {
window.velocity = ${randStr};
}
`;
var build = function () {
var pegStr = fs.readFileSync(pegjs_dev_file, 'utf-8');
var parserStr = peg.generate(pegStr, opts);
console.log('peg parser generation done');
var baseStr = fs.readFileSync(base_file, 'utf-8');
var funcStr = `var ${randStr} = new (function () { ${parserStr} ${baseStr} })(); ${moduleStr}`;
fs.writeFileSync(js_file, funcStr);
console.log('writing js module file done');
};
fs.stat(js_file, function (err, stat) {
if(stat && stat.isFile()) {
fs.unlinkSync(js_file);
} else {
console.log(js_file + ' does not exist');
}
build();
var uglifyOutput = exec('uglifyjs ./src/javascript/velocity.js -m -c conditionals,booleans,unused,join_vars,drop_console=true -o ./build/javascript/velocity.js --source-map ./build/javascript/velocity.js.map', {silent: true});
rm('./test/javascript/src/velocity.js');
cp('./build/javascript/velocity.js', './test/javascript/src/velocity.js');
});