提交 78f69dbf 编写于 作者: M Mr.doob

Merge remote-tracking branch 'gero3/sourcemaps' into dev

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');
}
}
}
......
......@@ -10,50 +10,63 @@ import tempfile
def main(argv=None):
parser = argparse.ArgumentParser()
parser.add_argument('--include', action='append', required=True)
parser.add_argument('--externs', action='append', default=['externs/common.js'])
parser.add_argument('--minify', action='store_true', default=False)
parser.add_argument('--output', default='../build/three.js')
parser = argparse.ArgumentParser()
parser.add_argument('--include', action='append', required=True)
parser.add_argument('--externs', action='append', default=['externs/common.js'])
parser.add_argument('--minify', action='store_true', default=False)
parser.add_argument('--output', default='../build/three.js')
parser.add_argument('--sourcemaps', action='store_true', default=False)
args = parser.parse_args()
args = parser.parse_args()
output = args.output
output = args.output
# merge
# merge
print(' * Building ' + output)
print(' * Building ' + output)
fd, path = tempfile.mkstemp()
tmp = open(path, 'w')
# enable sourcemaps support
for include in args.include:
with open('includes/' + include + '.json','r') as f: files = json.load(f)
for filename in files:
with open(filename, 'r') as f: tmp.write(f.read())
if args.sourcemaps:
sourcemap = output + '.map'
sourcemapping = '\n//@ sourceMappingURL=' + sourcemap
sourcemapargs = ' --create_source_map ' + sourcemap + ' --source_map_format=V3'
else:
sourcemap = sourcemapping = sourcemapargs = ''
tmp.close()
fd, path = tempfile.mkstemp()
tmp = open(path, 'w')
sources = []
# save
for include in args.include:
with open('includes/' + include + '.json','r') as f: files = json.load(f)
for filename in files:
sources.append(filename)
with open(filename, 'r') as f: tmp.write(f.read())
if args.minify is False:
tmp.close()
shutil.copy(path, output)
os.chmod(output, 0o664); # temp files would usually get 0600
# save
else:
if args.minify is False:
shutil.copy(path, output)
os.chmod(output, 0o664); # temp files would usually get 0600
externs = ' --externs '.join(args.externs)
os.system('java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --externs %s --jscomp_off=checkTypes --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s' % (externs, path, output))
else:
# header
externs = ' --externs '.join(args.externs)
source = ' '.join(sources)
cmd = 'java -jar compiler/compiler.jar --warning_level=VERBOSE --jscomp_off=globalThis --externs %s --jscomp_off=checkTypes --language_in=ECMASCRIPT5_STRICT --js %s --js_output_file %s %s' % (externs, source, output, sourcemapargs)
os.system(cmd)
with open(output,'r') as f: text = f.read()
with open(output,'w') as f: f.write('// three.js - http://github.com/mrdoob/three.js\n' + text)
# header
os.close(fd)
os.remove(path)
with open(output,'r') as f: text = f.read()
with open(output,'w') as f: f.write('// three.js - http://github.com/mrdoob/three.js\n' + text + sourcemapping)
os.close(fd)
os.remove(path)
if __name__ == "__main__":
main()
main()
......@@ -9,7 +9,7 @@
},
"devDependencies": {
"uglify-js": "*",
"uglify-js2": "*",
"argparse" : "*"
},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册