mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #13776: Add banner before generating source map. Close gh-1246.
This commit is contained in:
parent
aae7abfeb6
commit
9d16fe6283
67
Gruntfile.js
67
Gruntfile.js
@ -41,7 +41,7 @@ module.exports = function( grunt ) {
|
|||||||
srcFile: "src/sizzle/dist/sizzle.js"
|
srcFile: "src/sizzle/dist/sizzle.js"
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
all:{
|
all: {
|
||||||
dest: "dist/jquery.js",
|
dest: "dist/jquery.js",
|
||||||
src: [
|
src: [
|
||||||
"src/intro.js",
|
"src/intro.js",
|
||||||
@ -105,14 +105,31 @@ module.exports = function( grunt ) {
|
|||||||
tasks: "dev"
|
tasks: "dev"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"pre-uglify": {
|
||||||
|
all: {
|
||||||
|
files: {
|
||||||
|
"dist/jquery.pre-min.js": [ "dist/jquery.js" ]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
banner: "/*! jQuery v<%= pkg.version %> | " +
|
||||||
|
"(c) 2005, 2013 jQuery Foundation, Inc. | " +
|
||||||
|
"jquery.org/license\n" +
|
||||||
|
"//@ sourceMappingURL=jquery.min.map\n" +
|
||||||
|
"*/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
uglify: {
|
uglify: {
|
||||||
all: {
|
all: {
|
||||||
files: {
|
files: {
|
||||||
"dist/jquery.min.js": [ "dist/jquery.js" ]
|
"dist/jquery.min.js": [ "dist/jquery.pre-min.js" ]
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
banner: "/*! jQuery v<%= pkg.version %> | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license */",
|
// Keep our hard-coded banner
|
||||||
|
preserveComments: "some",
|
||||||
sourceMap: "dist/jquery.min.map",
|
sourceMap: "dist/jquery.min.map",
|
||||||
|
sourceMappingURL: "jquery.min.map",
|
||||||
|
report: "min",
|
||||||
beautify: {
|
beautify: {
|
||||||
ascii_only: true
|
ascii_only: true
|
||||||
},
|
},
|
||||||
@ -225,7 +242,6 @@ module.exports = function( grunt ) {
|
|||||||
grunt.log.writeln( "File '" + name + "' created." );
|
grunt.log.writeln( "File '" + name + "' created." );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Special "alias" task to make custom build creation less grawlix-y
|
// Special "alias" task to make custom build creation less grawlix-y
|
||||||
grunt.registerTask( "custom", function() {
|
grunt.registerTask( "custom", function() {
|
||||||
var done = this.async(),
|
var done = this.async(),
|
||||||
@ -245,7 +261,7 @@ module.exports = function( grunt ) {
|
|||||||
|
|
||||||
grunt.util.spawn({
|
grunt.util.spawn({
|
||||||
cmd: process.platform === "win32" ? "grunt.cmd" : "grunt",
|
cmd: process.platform === "win32" ? "grunt.cmd" : "grunt",
|
||||||
args: [ "build:*:*:" + modules, "uglify", "dist" ]
|
args: [ "build:*:*:" + modules, "pre-uglify", "uglify", "dist" ]
|
||||||
}, function( err, result ) {
|
}, function( err, result ) {
|
||||||
if ( err ) {
|
if ( err ) {
|
||||||
grunt.verbose.error();
|
grunt.verbose.error();
|
||||||
@ -260,7 +276,6 @@ module.exports = function( grunt ) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Special concat/build task to handle various jQuery build requirements
|
// Special concat/build task to handle various jQuery build requirements
|
||||||
//
|
|
||||||
grunt.registerMultiTask(
|
grunt.registerMultiTask(
|
||||||
"build",
|
"build",
|
||||||
"Concatenate source (include/exclude modules with +/- flags), embed date/version",
|
"Concatenate source (include/exclude modules with +/- flags), embed date/version",
|
||||||
@ -438,7 +453,7 @@ module.exports = function( grunt ) {
|
|||||||
nonascii = false;
|
nonascii = false;
|
||||||
|
|
||||||
distpaths.forEach(function( filename ) {
|
distpaths.forEach(function( filename ) {
|
||||||
var i, c, map,
|
var i, c,
|
||||||
text = fs.readFileSync( filename, "utf8" );
|
text = fs.readFileSync( filename, "utf8" );
|
||||||
|
|
||||||
// Ensure files use only \n for line endings, not \r\n
|
// Ensure files use only \n for line endings, not \r\n
|
||||||
@ -466,19 +481,17 @@ module.exports = function( grunt ) {
|
|||||||
if ( /\.map$/.test( filename ) ) {
|
if ( /\.map$/.test( filename ) ) {
|
||||||
text = text.replace( /"dist\//g, "\"" );
|
text = text.replace( /"dist\//g, "\"" );
|
||||||
fs.writeFileSync( filename, text, "utf-8" );
|
fs.writeFileSync( filename, text, "utf-8" );
|
||||||
|
|
||||||
|
// Use our hard-coded sourceMap directive instead of the autogenerated one (#13274; #13776)
|
||||||
} else if ( /\.min\.js$/.test( filename ) ) {
|
} else if ( /\.min\.js$/.test( filename ) ) {
|
||||||
// Wrap sourceMap directive in multiline comments (#13274)
|
i = 0;
|
||||||
text = text.replace( /\n?(\/\/@\s*sourceMappingURL=)(.*)/,
|
text = text.replace( /(?:\/\*|)\n?\/\/@\s*sourceMappingURL=.*(\n\*\/|)/g,
|
||||||
function( _, directive, path ) {
|
function( match ) {
|
||||||
map = "\n" + directive + path.replace( /^dist\//, "" );
|
if ( i++ ) {
|
||||||
return "";
|
return "";
|
||||||
});
|
|
||||||
if ( map ) {
|
|
||||||
text = text.replace( /(^\/\*[\w\W]*?)\s*\*\/|$/,
|
|
||||||
function( _, comment ) {
|
|
||||||
return ( comment || "\n/*" ) + map + "\n*/";
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
return match;
|
||||||
|
});
|
||||||
fs.writeFileSync( filename, text, "utf-8" );
|
fs.writeFileSync( filename, text, "utf-8" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,6 +512,24 @@ module.exports = function( grunt ) {
|
|||||||
return !nonascii;
|
return !nonascii;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 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.replace( /^\/\*!(?:.|\n)*?\*\/\n?/gm, "" );
|
||||||
|
}).join("\n");
|
||||||
|
|
||||||
|
// Write temp file (with optional banner)
|
||||||
|
grunt.file.write( mapping.dest, ( banner || "" ) + input );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// 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");
|
||||||
@ -508,7 +539,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", "uglify", "dist:*", "compare_size" ] );
|
grunt.registerTask( "default", [ "update_submodules", "selector", "build:*:*", "jshint", "pre-uglify", "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" ] );
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"grunt-update-submodules": "0.2.0",
|
"grunt-update-submodules": "0.2.0",
|
||||||
"grunt-contrib-watch": "0.3.1",
|
"grunt-contrib-watch": "0.3.1",
|
||||||
"grunt-contrib-jshint": "0.3.0",
|
"grunt-contrib-jshint": "0.3.0",
|
||||||
"grunt-contrib-uglify": "0.1.2",
|
"grunt-contrib-uglify": "0.2.0",
|
||||||
"grunt": "0.4.1",
|
"grunt": "0.4.1",
|
||||||
"gzip-js": "0.3.1",
|
"gzip-js": "0.3.1",
|
||||||
"testswarm": "0.2.2"
|
"testswarm": "0.2.2"
|
||||||
|
Loading…
Reference in New Issue
Block a user