build.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var fs = require("fs");
  2. var path = require("path");
  3. var argparse = require( "argparse" );
  4. var uglify = require("uglify-js2");
  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. parser.addArgument(['--sourcemaps'], {"action":'storeTrue', "defaultValue":false});
  14. var args = parser.parseArgs();
  15. var output = args.output;
  16. console.log(' * Building ' + output);
  17. var sourcemap,sourcemapping,sourcemapargs;
  18. if (args.sourcemaps){
  19. sourcemap = output + '.map';
  20. sourcemapping = '\n//@ sourceMappingURL=' + sourcemap;
  21. }else{
  22. sourcemap = sourcemapping = sourcemapargs = '';
  23. }
  24. var buffer = [];
  25. var sources = [];
  26. for (var i = 0;i < args.include.length;i++){
  27. var files = JSON.parse(fs.readFileSync('./includes/' + args.include[i] + '.json', 'utf8'));
  28. for (var file = 0;file < files.length;file++){
  29. sources.push(files[file]);
  30. buffer.push(fs.readFileSync(files[file], 'utf8'));
  31. }
  32. }
  33. console.log(buffer.length);
  34. var temp = buffer.join("");
  35. if (!args.minify){
  36. fs.writeFileSync(output,temp,'utf8');
  37. } else {
  38. var result = uglify.minify(sources, {
  39. outSourceMap: sourcemap
  40. });
  41. fs.writeFileSync(output,result.code + sourcemapping,'utf8');
  42. if (args.sourcemaps){
  43. fs.writeFileSync(sourcemap,result.map,'utf8');
  44. }
  45. }
  46. }
  47. main();