Update dependencies (#280)
* Remove an always failing test * Update dependencies * Revert 'temporary' npm package to v0.0.8 * Update Node version in Vagrantfile
This commit is contained in:
@@ -141,123 +141,19 @@ var FileMinifier = function() {
|
||||
// Uglify
|
||||
function minifyJs(body) {
|
||||
|
||||
// Splitting the Uglify function because it sometime takes too long (more than 10 seconds)
|
||||
// I hope that, by splitting, it can be a little more asynchronous, so the application doesn't freeze.
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
return splittedUglifyStep1(body)
|
||||
.delay(1)
|
||||
.then(splittedUglifyStep2)
|
||||
.delay(1)
|
||||
.then(function(ast) {
|
||||
var result = UglifyJS.minify(body, {
|
||||
// Only do the compression step for smaller files
|
||||
// otherwise it can take a very long time compared to the gain
|
||||
if (body.length < 200*1024) {
|
||||
return splittedUglifyStep3(ast);
|
||||
} else {
|
||||
debug('Skipping step 3 because the file is too big (%d bytes)!', body.length);
|
||||
return ast;
|
||||
}
|
||||
})
|
||||
.delay(1)
|
||||
.then(splittedUglifyStep4)
|
||||
.delay(1)
|
||||
.then(splittedUglifyStep5)
|
||||
.delay(1)
|
||||
.then(splittedUglifyStep6)
|
||||
.delay(1)
|
||||
.then(splittedUglifyStep7);
|
||||
|
||||
}
|
||||
|
||||
function splittedUglifyStep1(code) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
try {
|
||||
var toplevel_ast = UglifyJS.parse(code);
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 1 took %dms', endTime - startTime);
|
||||
deferred.resolve(toplevel_ast);
|
||||
|
||||
} catch(err) {
|
||||
debug('JS syntax error, Uglify\'s parser failed (step 1)');
|
||||
deferred.reject(err);
|
||||
}
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function splittedUglifyStep2(toplevel) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
toplevel.figure_out_scope();
|
||||
compress: (body.length < 200*1024)
|
||||
});
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 2 took %dms', endTime - startTime);
|
||||
deferred.resolve(toplevel);
|
||||
return deferred.promise;
|
||||
}
|
||||
debug('Uglify took %dms', endTime - startTime);
|
||||
deferred.resolve(result.code);
|
||||
|
||||
function splittedUglifyStep3(toplevel) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
var compressor = UglifyJS.Compressor({warnings: false});
|
||||
var compressed_ast = toplevel.transform(compressor);
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 3 took %dms', endTime - startTime);
|
||||
deferred.resolve(compressed_ast);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function splittedUglifyStep4(compressed_ast) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
compressed_ast.figure_out_scope();
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 4 took %dms', endTime - startTime);
|
||||
deferred.resolve(compressed_ast);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function splittedUglifyStep5(compressed_ast) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
compressed_ast.compute_char_frequency();
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 5 took %dms', endTime - startTime);
|
||||
deferred.resolve(compressed_ast);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function splittedUglifyStep6(compressed_ast) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
compressed_ast.mangle_names();
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 6 took %dms', endTime - startTime);
|
||||
deferred.resolve(compressed_ast);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function splittedUglifyStep7(compressed_ast) {
|
||||
var deferred = Q.defer();
|
||||
var startTime = Date.now();
|
||||
|
||||
var code = compressed_ast.print_to_string();
|
||||
|
||||
var endTime = Date.now();
|
||||
debug('Uglify step 7 took %dms', endTime - startTime);
|
||||
deferred.resolve(code);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user