- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -41,7 +41,7 @@ module.exports = function( grunt ) { | ||
srcFile: "src/sizzle/dist/sizzle.js" | ||
}, | ||
build: { | ||
all:{ | ||
all: { | ||
dest: "dist/jquery.js", | ||
src: [ | ||
"src/intro.js", | ||
@@ -105,14 +105,31 @@ module.exports = function( grunt ) { | ||
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. | " + | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
scottgonzalez
Member
|
||
"jquery.org/license\n" + | ||
"//@ sourceMappingURL=jquery.min.map\n" + | ||
"*/" | ||
} | ||
} | ||
}, | ||
uglify: { | ||
all: { | ||
files: { | ||
"dist/jquery.min.js": [ "dist/jquery.js" ] | ||
"dist/jquery.min.js": [ "dist/jquery.pre-min.js" ] | ||
}, | ||
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", | ||
sourceMappingURL: "jquery.min.map", | ||
report: "min", | ||
beautify: { | ||
ascii_only: true | ||
}, | ||
@@ -225,7 +242,6 @@ module.exports = function( grunt ) { | ||
grunt.log.writeln( "File '" + name + "' created." ); | ||
}); | ||
|
||
|
||
// Special "alias" task to make custom build creation less grawlix-y | ||
grunt.registerTask( "custom", function() { | ||
var done = this.async(), | ||
@@ -245,7 +261,7 @@ module.exports = function( grunt ) { | ||
|
||
grunt.util.spawn({ | ||
cmd: process.platform === "win32" ? "grunt.cmd" : "grunt", | ||
args: [ "build:*:*:" + modules, "uglify", "dist" ] | ||
args: [ "build:*:*:" + modules, "pre-uglify", "uglify", "dist" ] | ||
}, function( err, result ) { | ||
if ( err ) { | ||
grunt.verbose.error(); | ||
@@ -260,7 +276,6 @@ module.exports = function( grunt ) { | ||
}); | ||
|
||
// Special concat/build task to handle various jQuery build requirements | ||
// | ||
grunt.registerMultiTask( | ||
"build", | ||
"Concatenate source (include/exclude modules with +/- flags), embed date/version", | ||
@@ -438,7 +453,7 @@ module.exports = function( grunt ) { | ||
nonascii = false; | ||
|
||
distpaths.forEach(function( filename ) { | ||
var i, c, map, | ||
var i, c, | ||
text = fs.readFileSync( filename, "utf8" ); | ||
|
||
// Ensure files use only \n for line endings, not \r\n | ||
@@ -466,19 +481,17 @@ module.exports = function( grunt ) { | ||
if ( /\.map$/.test( filename ) ) { | ||
text = text.replace( /"dist\//g, "\"" ); | ||
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 ) ) { | ||
// Wrap sourceMap directive in multiline comments (#13274) | ||
text = text.replace( /\n?(\/\/@\s*sourceMappingURL=)(.*)/, | ||
function( _, directive, path ) { | ||
map = "\n" + directive + path.replace( /^dist\//, "" ); | ||
return ""; | ||
i = 0; | ||
text = text.replace( /(?:\/\*|)\n?\/\/@\s*sourceMappingURL=.*(\n\*\/|)/g, | ||
function( match ) { | ||
if ( i++ ) { | ||
return ""; | ||
} | ||
return match; | ||
}); | ||
if ( map ) { | ||
text = text.replace( /(^\/\*[\w\W]*?)\s*\*\/|$/, | ||
function( _, comment ) { | ||
return ( comment || "\n/*" ) + map + "\n*/"; | ||
}); | ||
} | ||
fs.writeFileSync( filename, text, "utf-8" ); | ||
} | ||
|
||
@@ -499,6 +512,24 @@ module.exports = function( grunt ) { | ||
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 | ||
grunt.loadNpmTasks("grunt-compare-size"); | ||
grunt.loadNpmTasks("grunt-git-authors"); | ||
@@ -508,7 +539,7 @@ module.exports = function( grunt ) { | ||
grunt.loadNpmTasks("grunt-contrib-uglify"); | ||
|
||
// 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 | ||
grunt.registerTask( "dev", [ "selector", "build:*:*", "jshint" ] ); | ||
1 comment
on commit 9d16fe6
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In my understanding of copyright law it would be okay to record "2005" in the instance of jQuery.
The copyright dates seem off. jQuery wasn't released until 2006 and the foundation formed a bit later. I know in the foundation history page it mentions hints of a lib, but it didn't materialize until 2006.