/* * grunt-contrib-uglify * http://gruntjs.com/ * * Copyright (c) 2012 "Cowboy" Ben Alman, contributors * Licensed under the MIT license. */ 'use strict'; module.exports = function(grunt) { // Internal lib. var uglify = require('./lib/uglify').init(grunt); var minlib = require('./lib/min').init(grunt); grunt.registerMultiTask('uglify', 'Minify files with UglifyJS.', function() { // Merge task-specific and/or target-specific options with these defaults. var options = this.options({ banner: '', compress: { warnings: false }, mangle: {}, beautify: false }); // Process banner. var banner = grunt.template.process(options.banner); // Iterate over all src-dest file pairs. this.files.forEach(function(f) { var src = f.src.filter(function(filepath) { // Warn on and remove invalid source files (if nonull was set). if (!grunt.file.exists(filepath)) { grunt.log.warn('Source file "' + filepath + '" not found.'); return false; } else { return true; } }); // Minify files, warn and fail on error. var result; try { result = uglify.minify(src, f.dest, options); } catch (e) { var err = new Error('Uglification failed.'); err.origError = e; grunt.fail.warn(err); } // Concat banner + minified source. var output = banner + result.min; // Write the destination file. grunt.file.write(f.dest, output); // Write source map if (options.sourceMap) { grunt.file.write(options.sourceMap, result.sourceMap); grunt.log.writeln('Source Map "' + options.sourceMap + '" created.'); } // Print a success message. grunt.log.writeln('File "' + f.dest + '" created.'); // ...and report some size information. minlib.info(result.min, result.max); }); }); };