From 0277e1163b3bee6212e0e29fc680a68af63c1344 Mon Sep 17 00:00:00 2001 From: Romain Ruetschi Date: Mon, 22 Aug 2011 01:56:34 +0200 Subject: [PATCH] Add a script to generate the minified version of jsmad. --- scripts/uglify | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 scripts/uglify diff --git a/scripts/uglify b/scripts/uglify new file mode 100755 index 0000000..f52a0d0 --- /dev/null +++ b/scripts/uglify @@ -0,0 +1,65 @@ +#!/usr/bin/env node + +var sys = require( 'sys' ), + path = require( 'path' ), + fs = require( 'fs' ), + uglify = require( 'uglify-js' ); + +var root = path.dirname( __dirname ) + '/', + files = [ + 'src/mad.js', + 'src/rq_table.js', + 'src/imdct_s.js', + 'src/huffman.js', + 'src/bit.js', + 'src/stream.js', + 'src/layer3.js', + 'src/frame.js', + 'src/synth.js', + 'src/bytestream.js', + 'src/filestream.js', + 'src/substream.js', + 'src/id3v22stream.js', + 'src/id3v23stream.js', + 'src/mp3file.js', + 'src/ajaxstream.js', + 'src/stringstream.js', + 'src/player.js' + ], + i, + file, + code = ''; + +for( i = 0; i < files.length; i++ ) { + + console.log( 'Reading ' + files[ i ] + '...' ); + + file = root + files[ i ]; + code += '\n/* File: ' + files[ i ] + ' */\n'; + code += fs.readFileSync( file, 'utf-8' ); +} + +try { + + console.log( 'UglifyJS: Parsing the source code...' ); + var ast = uglify.parser.parse( code ); + + console.log( 'UglifyJS: Mangling the code...' ); + ast = uglify.uglify.ast_mangle( ast ); // get a new AST with mangled names + + console.log( 'UglifyJS: Squeezing the code...' ); + ast = uglify.uglify.ast_squeeze( ast ); // get an AST with compression optimizations + + console.log( 'UglifyJS: Generating the code...' ); + var finalCode = uglify.uglify.gen_code( ast ); // compressed code here + + console.log( 'Writing the code into src/jsmad.min.js...' ); + fs.writeFileSync( root + 'src/jsmad.min.js', finalCode, 'utf-8' ); + + console.log( 'Success! The uglified source code has been stored into src/jsmad.min.js.' ); + +} catch( e ) +{ + console.error( 'Error: something went wrong.' ); + console.error( e.toString() ); +}