You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* * 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 contrib = require('grunt-lib-contrib').init(grunt); var uglify = require('./lib/uglify').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, report: false });
// Process banner.
var banner = grunt.template.process(options.banner); var mapNameGenerator, mappingURLGenerator;
// 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; } });
// function to get the name of the sourceMap
if (typeof options.sourceMap === "function") { mapNameGenerator = options.sourceMap; }
// function to get the sourceMappingURL
if (typeof options.sourceMappingURL === "function") { mappingURLGenerator = options.sourceMappingURL; }
if (mapNameGenerator) { try { options.sourceMap = mapNameGenerator(f.dest); } catch (e) { var err = new Error('SourceMapName failed.'); err.origError = e; grunt.fail.warn(err); } }
if (mappingURLGenerator) { try { options.sourceMappingURL = mappingURLGenerator(f.dest); } catch (e) { var err = new Error('SourceMapName failed.'); err.origError = e; grunt.fail.warn(err); } }
// 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.'); if (e.msg) { err.message += ', ' + e.msg + '.'; } 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.
if (options.report) { contrib.minMaxInfo(result.min, result.max, options.report); } }); });
};
|