mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Fix #13793. Correct source map generation bugs. Close gh-1275. (cherry-picked from commit 997da31121
)
This commit is contained in:
parent
53095883ef
commit
ce1a8295d7
56
Gruntfile.js
56
Gruntfile.js
@ -111,11 +111,12 @@ module.exports = function( grunt ) {
|
|||||||
"dist/jquery.pre-min.js": [ "dist/jquery.js" ]
|
"dist/jquery.pre-min.js": [ "dist/jquery.js" ]
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
banner: "/*! jQuery v<%= pkg.version %> | " +
|
banner: "\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. | " +
|
"(c) 2005, 2013 jQuery Foundation, Inc. | " +
|
||||||
"jquery.org/license\n" +
|
"jquery.org/license\n" +
|
||||||
"//@ sourceMappingURL=jquery.min.map\n" +
|
"//@ sourceMappingURL=jquery.min.map\n" +
|
||||||
"*/"
|
"*/\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -141,6 +142,17 @@ module.exports = function( grunt ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"post-uglify": {
|
||||||
|
all: {
|
||||||
|
files: {
|
||||||
|
"dist/jquery.min.map.tmp": [ "dist/jquery.min.map" ],
|
||||||
|
"dist/jquery.min.js.tmp": [ "dist/jquery.min.js" ]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
tempFiles: [ "dist/jquery.min.map.tmp", "dist/jquery.min.js.tmp", "dist/jquery.pre-min.js" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -432,7 +444,7 @@ module.exports = function( grunt ) {
|
|||||||
|
|
||||||
// Check for stored destination paths
|
// Check for stored destination paths
|
||||||
// ( set in dist/.destination.json )
|
// ( set in dist/.destination.json )
|
||||||
stored = Object.keys( grunt.config("dst") );
|
stored = Object.keys( grunt.config( "dst" ) );
|
||||||
|
|
||||||
// Allow command line input as well
|
// Allow command line input as well
|
||||||
flags = Object.keys( this.flags );
|
flags = Object.keys( this.flags );
|
||||||
@ -443,7 +455,7 @@ module.exports = function( grunt ) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Ensure the dist files are pure ASCII
|
// Ensure the dist files are pure ASCII
|
||||||
fs = require("fs");
|
fs = require( "fs" );
|
||||||
nonascii = false;
|
nonascii = false;
|
||||||
|
|
||||||
distpaths.forEach(function( filename ) {
|
distpaths.forEach(function( filename ) {
|
||||||
@ -516,7 +528,13 @@ module.exports = function( grunt ) {
|
|||||||
var contents = grunt.file.read( file );
|
var contents = grunt.file.read( file );
|
||||||
|
|
||||||
// Strip banners
|
// Strip banners
|
||||||
return contents.replace( /^\/\*!(?:.|\n)*?\*\/\n?/gm, "" );
|
return contents
|
||||||
|
// Remove the main jQuery banner, it'll be replaced by the new banner anyway.
|
||||||
|
.replace( /^\/\*!(?:.|\n)*?\*\/\n?/g, "" )
|
||||||
|
// Strip other banners preserving line count.
|
||||||
|
.replace( /^\/\*!(?:.|\n)*?\*\/\n?/gm, function ( match ) {
|
||||||
|
return match.replace( /[^\n]/gm, "" );
|
||||||
|
});
|
||||||
}).join("\n");
|
}).join("\n");
|
||||||
|
|
||||||
// Write temp file (with optional banner)
|
// Write temp file (with optional banner)
|
||||||
@ -524,6 +542,32 @@ module.exports = function( grunt ) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 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.
|
||||||
|
// Also, remove temporary files.
|
||||||
|
grunt.registerMultiTask( "post-uglify", function() {
|
||||||
|
var fs = require( "fs" );
|
||||||
|
|
||||||
|
this.files.forEach(function( mapping ) {
|
||||||
|
var mapFileName = mapping.src[ 0 ];
|
||||||
|
|
||||||
|
// Rename the file to a temporary name.
|
||||||
|
fs.renameSync( mapFileName, mapping.dest);
|
||||||
|
grunt.file.write( mapFileName, grunt.file.read( mapping.dest )
|
||||||
|
// The uglify task erroneously prepends dist/ to file names.
|
||||||
|
.replace( /"dist\//g, "\"" )
|
||||||
|
// Refer to the source jquery.js, not the temporary jquery.pre-min.js.
|
||||||
|
.replace( /\.pre-min\./g, "." )
|
||||||
|
// There's already a pragma at the beginning of the file, remove the one at the end.
|
||||||
|
.replace( /\/\/@ sourceMappingURL=jquery\.min\.map$/g, "" ));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Remove temporary files.
|
||||||
|
this.options().tempFiles.forEach(function( fileName ) {
|
||||||
|
fs.unlink( fileName );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Load grunt tasks from NPM packages
|
// Load grunt tasks from NPM packages
|
||||||
grunt.loadNpmTasks("grunt-compare-size");
|
grunt.loadNpmTasks("grunt-compare-size");
|
||||||
grunt.loadNpmTasks("grunt-git-authors");
|
grunt.loadNpmTasks("grunt-git-authors");
|
||||||
@ -533,7 +577,7 @@ module.exports = function( grunt ) {
|
|||||||
grunt.loadNpmTasks("grunt-contrib-uglify");
|
grunt.loadNpmTasks("grunt-contrib-uglify");
|
||||||
|
|
||||||
// Default grunt
|
// Default grunt
|
||||||
grunt.registerTask( "default", [ "update_submodules", "selector", "build:*:*", "jshint", "pre-uglify", "uglify", "dist:*", "compare_size" ] );
|
grunt.registerTask( "default", [ "update_submodules", "selector", "build:*:*", "jshint", "pre-uglify", "uglify", "post-uglify", "dist:*", "compare_size" ] );
|
||||||
|
|
||||||
// Short list as a high frequency watch task
|
// Short list as a high frequency watch task
|
||||||
grunt.registerTask( "dev", [ "selector", "build:*:*", "jshint" ] );
|
grunt.registerTask( "dev", [ "selector", "build:*:*", "jshint" ] );
|
||||||
|
Loading…
Reference in New Issue
Block a user