| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | /* * 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);    });  });};
 |