build.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var fs = require("fs");
  2. var path = require("path");
  3. var argparse = require( "argparse" );
  4. var uglify = require("uglify-js");
  5. var spawn = require('child_process').spawn;
  6. function main(){
  7. "use strict";
  8. var parser = new argparse.ArgumentParser();
  9. parser.addArgument(['--include'], {"action":'append', 'required':true});
  10. parser.addArgument(['--externs'], {"action":'append', "defaultValue":['./externs/common.js']});
  11. parser.addArgument(['--minify'], {"action":'storeTrue', "defaultValue":false});
  12. parser.addArgument(['--output'], {"defaultValue":'../build/three.js'});
  13. var args = parser.parseArgs();
  14. var output = args.output;
  15. console.log(' * Building ' + output);
  16. console.dir(args);
  17. var buffer = [];
  18. for (var i = 0;i < args.include.length;i++){
  19. var files = JSON.parse(fs.readFileSync('./includes/' + args.include[i] + '.json', 'utf8'));
  20. for (var file = 0;file < files.length;file++){
  21. buffer.push(fs.readFileSync(files[file], 'utf8'));
  22. }
  23. }
  24. console.log(buffer.length);
  25. var temp = buffer.join("");
  26. if (!args.minify){
  27. fs.writeFileSync(output,temp,'utf8');
  28. } else {
  29. fs.writeFileSync(output,uglify(temp),'utf8');
  30. // An attempt to get the closure minifier working
  31. // var externs = ' --externs ' + args.externs.join();
  32. // console.log(externs);
  33. // var temppath = output + ".tmp";
  34. // fs.writeFileSync(temppath,temp,'utf8');
  35. // var java = spawn("java -jar ./compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis " + externs + " --jscomp_off=checkTypes --language_in=ECMASCRIPT5_STRICT --js " + temppath + " --js_output_file " + output);
  36. // java.stdout.on('data', function (data) {
  37. // console.log(data);
  38. // });
  39. // java.stderr.on('data', function (data) {
  40. // console.log('java stderr: ' + data);
  41. // });
  42. // java.on('exit', function (code) {
  43. // if (code !== 0) {
  44. // console.log('java process exited with code ' + code);
  45. // }
  46. // });
  47. }
  48. }
  49. main();