Browse Source

add sourcemapping to the nodejs buildsystem

OpenShift guest 12 years ago
parent
commit
2874313b05
2 changed files with 21 additions and 25 deletions
  1. 20 24
      utils/build.js
  2. 1 1
      utils/package.json

+ 20 - 24
utils/build.js

@@ -1,7 +1,7 @@
 var fs = require("fs");
 var path = require("path");
 var argparse =  require( "argparse" );
-var uglify = require("uglify-js");
+var uglify = require("uglify-js2");
 var spawn = require('child_process').spawn;
 
 function main(){
@@ -10,7 +10,8 @@ function main(){
     parser.addArgument(['--include'], {"action":'append', 'required':true});
     parser.addArgument(['--externs'], {"action":'append', "defaultValue":['./externs/common.js']});
     parser.addArgument(['--minify'], {"action":'storeTrue', "defaultValue":false});
-    parser.addArgument(['--output'], {"defaultValue":'../build/three.js'});   
+    parser.addArgument(['--output'], {"defaultValue":'../build/three.js'});  
+    parser.addArgument(['--sourcemaps'], {"action":'storeTrue', "defaultValue":false});
     
     
 	var args = parser.parseArgs();
@@ -18,13 +19,21 @@ function main(){
     var output = args.output;
     console.log(' * Building ' + output);
     
-    console.dir(args);
+    var sourcemap,sourcemapping,sourcemapargs;
+    if (args.sourcemaps){
+		sourcemap = output + '.map';
+    	sourcemapping = '\n//@ sourceMappingURL=' + sourcemap;
+	}else{
+		sourcemap = sourcemapping = sourcemapargs = '';
+	}
     
     var buffer = [];
+    var sources = [];
     for (var i = 0;i < args.include.length;i++){
         
         var files = JSON.parse(fs.readFileSync('./includes/' + args.include[i] + '.json', 'utf8'));
         for (var file = 0;file < files.length;file++){
+    		sources.push(files[file]);
             buffer.push(fs.readFileSync(files[file], 'utf8'));
         }
     }
@@ -34,30 +43,17 @@ function main(){
     if (!args.minify){
         fs.writeFileSync(output,temp,'utf8');
     } else {
+        var result = uglify.minify(sources, {
+            outSourceMap: sourcemap
+        });
         
-        fs.writeFileSync(output,uglify(temp),'utf8');
         
-//        An attempt to get the closure minifier working
-
-//        var externs = ' --externs ' + args.externs.join();
-//        console.log(externs);
-//        var temppath = output + ".tmp";
-//        fs.writeFileSync(temppath,temp,'utf8');
-//        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);
-//        java.stdout.on('data', function (data) {
-//            console.log(data);
-//        });
-//        java.stderr.on('data', function (data) {
-//          console.log('java stderr: ' + data);
-//        });
-//        java.on('exit', function (code) {
-//            if (code !== 0) {
-//                console.log('java process exited with code ' + code);
-//            }
-//        });
-
-
+        fs.writeFileSync(output,result.code + sourcemapping,'utf8');
         
+
+        if (args.sourcemaps){
+            fs.writeFileSync(sourcemap,result.map,'utf8');
+        }
     
     }
 }

+ 1 - 1
utils/package.json

@@ -9,7 +9,7 @@
     },
 
     "devDependencies": {
-    	"uglify-js": "*",
+    	"uglify-js2": "*",
     	"argparse" : "*"
     },