From 7c38b0686d1e558715c8cff8bcfa538aca146b8e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20Go=C5=82e=CC=A8biowski?= Date: Sat, 9 Nov 2013 23:12:06 +0100 Subject: [PATCH] Remove workarounds for the uglify task mishandling banners when used with source maps. (cherry-picked from d0fadbba9f1dbe2ee009be6586fbdf3cda4eff98) The issue was fixed in grunt-contrib-uglify: https://github.com/gruntjs/grunt-contrib-uglify/issues/22 --- Gruntfile.js | 39 ++++++++++-------------------------- build/tasks/uglify.js | 46 ------------------------------------------- package.json | 2 +- 3 files changed, 11 insertions(+), 76 deletions(-) delete mode 100644 build/tasks/uglify.js diff --git a/Gruntfile.js b/Gruntfile.js index 55aca6e10..8baf8bc8c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,7 +5,7 @@ module.exports = function( grunt ) { var data = {}; try { data = grunt.file.readJSON( filepath ); - } catch(e) {} + } catch ( e ) {} return data; } @@ -17,8 +17,8 @@ module.exports = function( grunt ) { delete srcHintOptions.onevar; grunt.initConfig({ - pkg: grunt.file.readJSON("package.json"), - dst: readOptionalJSON("dist/.destination.json"), + pkg: grunt.file.readJSON( "package.json" ), + dst: readOptionalJSON( "dist/.destination.json" ), compare_size: { files: [ "dist/jquery.js", "dist/jquery.min.js" ], options: { @@ -87,39 +87,28 @@ module.exports = function( grunt ) { tasks: "build/tasks/*.js" }, testswarm: { - tests: "ajax attributes callbacks core css data deferred dimensions effects event manipulation offset queue selector serialize support traversing Sizzle".split(" ") + tests: "ajax attributes callbacks core css data deferred dimensions effects event manipulation offset queue selector serialize support traversing Sizzle".split( " " ) }, watch: { files: [ "<%= jshint.grunt.src %>", "<%= jshint.tests.src %>", "src/**/*.js" ], tasks: "dev" }, - "pre-uglify": { - all: { - files: { - "dist/jquery.pre-min.js": [ "dist/jquery.js" ] - }, - options: { - banner: "\n\n\n\n\n\n\n\n\n\n\n\n" + // banner line size must be preserved - "/*! jQuery v<%= pkg.version %> | " + - "(c) 2005, 2013 jQuery Foundation, Inc. | " + - "jquery.org/license */\n" - } - } - }, uglify: { all: { files: { - "dist/jquery.min.js": [ "dist/jquery.pre-min.js" ] + "dist/jquery.min.js": [ "dist/jquery.js" ] }, options: { - // Keep our hard-coded banner - preserveComments: "some", + preserveComments: false, sourceMap: "dist/jquery.min.map", sourceMappingURL: "jquery.min.map", report: "min", beautify: { ascii_only: true }, + banner: "/*! jQuery v<%= pkg.version %> | " + + "(c) 2005, 2013 jQuery Foundation, Inc. | " + + "jquery.org/license */", compress: { hoist_funs: false, loops: false, @@ -127,14 +116,6 @@ module.exports = function( grunt ) { } } } - }, - "post-uglify": { - all: { - src: [ "dist/jquery.min.map" ], - options: { - tempFiles: [ "dist/jquery.pre-min.js" ] - } - } } }); @@ -148,5 +129,5 @@ module.exports = function( grunt ) { grunt.registerTask( "dev", [ "build:*:*", "jshint", "jscs" ] ); // Default grunt - grunt.registerTask( "default", [ "jsonlint", "dev", "pre-uglify", "uglify", "post-uglify", "dist:*", "compare_size" ] ); + grunt.registerTask( "default", [ "jsonlint", "dev", "uglify", "dist:*", "compare_size" ] ); }; diff --git a/build/tasks/uglify.js b/build/tasks/uglify.js deleted file mode 100644 index f8df5e77e..000000000 --- a/build/tasks/uglify.js +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = function( grunt ) { - - "use strict"; - - var fs = require( "fs" ); - - // Work around grunt-contrib-uglify sourceMap issues (jQuery #13776) - grunt.registerMultiTask( "pre-uglify", function() { - var banner = this.options().banner; - - this.files.forEach(function( mapping ) { - // Join src - var input = mapping.src.map(function( file ) { - var contents = grunt.file.read( file ); - - // Strip banners - return contents - // Remove the main jQuery banner, it'll be replaced by the new banner anyway. - .replace( /^\/\*![\W\w]*?\*\/\n?/g, "" ) - // Strip other banners preserving line count. - .replace( /^\/\*!(?:.|\n)*?\*\/\n?/gm, function( match ) { - return match.replace( /[^\n]/gm, "" ); - }); - }).join( "\n" ); - - // Write temp file (with optional banner) - grunt.file.write( mapping.dest, ( banner || "" ) + input ); - }); - }); - - // Change the map file to point back to jquery.js instead of jquery.pre-min.js. - // The problem is caused by the pre-uglify task. - grunt.registerMultiTask( "post-uglify", function() { - this.files.forEach(function( mapping ) { - mapping.src.forEach( function( src ) { - // Refer to the source jquery.js, not the temporary jquery.pre-min.js. - grunt.file.write( src, grunt.file.read( src ).replace( /\.pre-min\./g, "." ) ); - }); - }); - - // Remove temporary files. - this.options().tempFiles.forEach(function( fileName ) { - fs.unlink( fileName ); - }); - }); -}; diff --git a/package.json b/package.json index e1db1978f..9a3a25fdb 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "grunt": "~0.4.1", "grunt-compare-size": "~0.4.0", "grunt-contrib-jshint": "~0.7.0", - "grunt-contrib-uglify": "~0.2.4", + "grunt-contrib-uglify": "~0.2.7", "grunt-contrib-watch": "~0.5.3", "grunt-git-authors": "~1.2.0", "grunt-jscs-checker": "~0.2.3", -- 2.39.5