forked from mrdoob/three.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.js
87 lines (55 loc) · 2.25 KB
/
build.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
var fs = require("fs");
var path = require("path");
var argparse = require( "argparse" );
var uglify = require("uglify-js2");
var spawn = require('child_process').spawn;
function main() {
"use strict";
var parser = new argparse.ArgumentParser();
parser.addArgument( ['--include'], { action: 'append', required: true } );
parser.addArgument( ['--externs'], { action: 'append', defaultValue: ['./externs/common.js'] } );
parser.addArgument( ['--amd'], { action: 'storeTrue', defaultValue: false } );
parser.addArgument( ['--minify'], { action: 'storeTrue', defaultValue: false } );
parser.addArgument( ['--output'], { defaultValue: '../../build/three.js' } );
parser.addArgument( ['--sourcemaps'], { action: 'storeTrue', defaultValue: false } );
var args = parser.parseArgs();
var output = args.output;
console.log(' * Building ' + output);
var sourcemap = '';
var sourcemapping = '';
if ( args.sourcemaps ){
sourcemap = output + '.map';
sourcemapping = '\n//@ sourceMappingURL=' + sourcemap;
}
var buffer = [];
var sources = [];
if ( args.amd ){
buffer.push('function ( root, factory ) {\n\n\tif ( typeof define === \'function\' && define.amd ) {\n\n\t\tdefine( [ \'exports\' ], factory );\n\n\t} else if ( typeof exports === \'object\' ) {\n\n\t\tfactory( exports );\n\n\t} else {\n\n\t\tfactory( root );\n\n\t}\n\n}( this, function ( exports ) {\n\n');
};
for ( var i = 0; i < args.include.length; i ++ ){
var contents = fs.readFileSync( './includes/' + args.include[i] + '.json', 'utf8' );
var files = JSON.parse( contents );
for ( var j = 0; j < files.length; j ++ ){
var file = '../../' + files[ j ];
sources.push( file );
buffer.push('// File:' + files[ j ]);
buffer.push('\n\n');
buffer.push( fs.readFileSync( file, 'utf8' ) );
buffer.push('\n');
}
}
if ( args.amd ){
buffer.push('exports.THREE = THREE;\n\n} ) );');
};
var temp = buffer.join( '' );
if ( !args.minify ){
fs.writeFileSync( output,temp, 'utf8' );
} else {
var result = uglify.minify( sources, { outSourceMap: sourcemap } );
fs.writeFileSync( output, '// threejs.org/license\n' + result.code + sourcemapping, 'utf8' );
if ( args.sourcemaps ) {
fs.writeFileSync( sourcemap, result.map, 'utf8' );
}
}
}
main();