diff options
author | Timmy Willison <timmywillisn@gmail.com> | 2013-08-15 14:15:49 -0400 |
---|---|---|
committer | Timmy Willison <timmywillisn@gmail.com> | 2013-08-15 15:49:49 -0400 |
commit | 217cbb7109b7a5bbacd3170e90607ca5972fc1cd (patch) | |
tree | 4deb7b42f248f7ea73398dc329584899b5573413 /Gruntfile.js | |
parent | 144837afdfab98d6a9f753bc4ccc1feede410101 (diff) | |
download | jquery-217cbb7109b7a5bbacd3170e90607ca5972fc1cd.tar.gz jquery-217cbb7109b7a5bbacd3170e90607ca5972fc1cd.zip |
AMD-ify jQuery sourcegit s! Woo! Fixes #14113, #14163.
Conflicts:
Gruntfile.js
README.md
src/ajax.js
src/ajax/xhr.js
src/attributes.js
src/core.js
src/css.js
src/data.js
src/effects.js
src/event.js
src/manipulation.js
src/offset.js
src/selector-native.js
src/traversing.js
test/unit/core.js
test/unit/data.js
Diffstat (limited to 'Gruntfile.js')
-rw-r--r-- | Gruntfile.js | 295 |
1 files changed, 14 insertions, 281 deletions
diff --git a/Gruntfile.js b/Gruntfile.js index b0cf75ce3..538f6fb80 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,6 +2,9 @@ module.exports = function( grunt ) { "use strict"; + // Integrate build task + require( "./build/build" )( grunt ); + var distpaths = [ "dist/jquery.js", "dist/jquery.min.map", @@ -36,41 +39,17 @@ module.exports = function( grunt ) { cache: "dist/.sizecache.json" } }, - selector: { - destFile: "src/selector-sizzle.js", - apiFile: "src/sizzle-jquery.js", - srcFile: "bower_components/sizzle/dist/sizzle.js" - }, build: { all: { dest: "dist/jquery.js", - src: [ - "src/intro.js", - "src/core.js", - "src/selector-sizzle.js", - "src/callbacks.js", - "src/deferred.js", - "src/support.js", - "src/data.js", - "src/queue.js", - "src/attributes.js", - "src/event.js", - "src/traversing.js", - "src/manipulation.js", - { flag: "wrap", src: "src/wrap.js" }, - { flag: "css", src: "src/css.js" }, - "src/serialize.js", - { flag: "event-alias", src: "src/event-alias.js" }, - { flag: "ajax", src: "src/ajax.js" }, - { flag: "ajax/script", src: "src/ajax/script.js", needs: ["ajax"] }, - { flag: "ajax/jsonp", src: "src/ajax/jsonp.js", needs: [ "ajax", "ajax/script" ] }, - { flag: "ajax/xhr", src: "src/ajax/xhr.js", needs: ["ajax"] }, - { flag: "effects", src: "src/effects.js", needs: ["css"] }, - { flag: "offset", src: "src/offset.js", needs: ["css"] }, - { flag: "dimensions", src: "src/dimensions.js", needs: ["css"] }, - { flag: "deprecated", src: "src/deprecated.js" }, - "src/outro.js" - ] + minimum: [ + "core", + "selector" + ], + removeWith: { + callbacks: [ "deferred" ], + css: [ "effects", "dimensions", "offset" ] + } } }, jsonlint: { @@ -87,7 +66,7 @@ module.exports = function( grunt ) { options: srcHintOptions }, grunt: { - src: [ "Gruntfile.js" ], + src: [ "Gruntfile.js", "build/build.js" ], options: { jshintrc: ".jshintrc" } @@ -203,252 +182,6 @@ module.exports = function( grunt ) { ); }); - grunt.registerTask( "selector", "Build Sizzle-based selector module", function() { - - var cfg = grunt.config("selector"), - name = cfg.destFile, - sizzle = { - api: grunt.file.read( cfg.apiFile ), - src: grunt.file.read( cfg.srcFile ) - }, - compiled, parts; - - /** - - sizzle-jquery.js -> sizzle between "EXPOSE" blocks, - replace define & window.Sizzle assignment - - - // EXPOSE - if ( typeof define === "function" && define.amd ) { - define(function() { return Sizzle; }); - } else { - window.Sizzle = Sizzle; - } - // EXPOSE - - Becomes... - - Sizzle.attr = jQuery.attr; - jQuery.find = Sizzle; - jQuery.expr = Sizzle.selectors; - jQuery.expr[":"] = jQuery.expr.pseudos; - jQuery.unique = Sizzle.uniqueSort; - jQuery.text = Sizzle.getText; - jQuery.isXMLDoc = Sizzle.isXML; - jQuery.contains = Sizzle.contains; - - */ - - // Break into 3 pieces - parts = sizzle.src.split("// EXPOSE"); - // Replace the if/else block with api - parts[1] = sizzle.api; - // Rejoin the pieces - compiled = parts.join(""); - - grunt.verbose.writeln("Injected " + cfg.apiFile + " into " + cfg.srcFile); - - // Write concatenated source to file, and ensure newline-only termination - grunt.file.write( name, compiled.replace( /\x0d\x0a/g, "\x0a" ) ); - - // Fail task if errors were logged. - if ( this.errorCount ) { - return false; - } - - // Otherwise, print a success message. - 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(), - args = [].slice.call(arguments), - modules = args.length ? args[0].replace(/,/g, ":") : ""; - - - // Translation example - // - // grunt custom:+ajax,-dimensions,-effects,-offset - // - // Becomes: - // - // grunt build:*:*:+ajax:-dimensions:-effects:-offset - - grunt.log.writeln( "Creating custom build...\n" ); - - grunt.util.spawn({ - grunt: true, - args: [ "build:*:*:" + modules, "pre-uglify", "uglify", "dist" ] - }, function( err, result ) { - if ( err ) { - grunt.verbose.error(); - done( err ); - return; - } - - grunt.log.writeln( result.stdout.replace("Done, without errors.", "") ); - - done(); - }); - }); - - // Special concat/build task to handle various jQuery build requirements - grunt.registerMultiTask( - "build", - "Concatenate source (include/exclude modules with +/- flags), embed date/version", - function() { - - // Concat specified files. - var compiled = "", - modules = this.flags, - optIn = !modules["*"], - explicit = optIn || Object.keys(modules).length > 1, - name = this.data.dest, - src = this.data.src, - deps = {}, - excluded = {}, - version = grunt.config( "pkg.version" ), - excluder = function( flag, needsFlag ) { - // optIn defaults implicit behavior to weak exclusion - if ( optIn && !modules[ flag ] && !modules[ "+" + flag ] ) { - excluded[ flag ] = false; - } - - // explicit or inherited strong exclusion - if ( excluded[ needsFlag ] || modules[ "-" + flag ] ) { - excluded[ flag ] = true; - - // explicit inclusion overrides weak exclusion - } else if ( excluded[ needsFlag ] === false && - ( modules[ flag ] || modules[ "+" + flag ] ) ) { - - delete excluded[ needsFlag ]; - - // ...all the way down - if ( deps[ needsFlag ] ) { - deps[ needsFlag ].forEach(function( subDep ) { - modules[ needsFlag ] = true; - excluder( needsFlag, subDep ); - }); - } - } - }; - - // append commit id to version - if ( process.env.COMMIT ) { - version += " " + process.env.COMMIT; - } - - // figure out which files to exclude based on these rules in this order: - // dependency explicit exclude - // > explicit exclude - // > explicit include - // > dependency implicit exclude - // > implicit exclude - // examples: - // * none (implicit exclude) - // *:* all (implicit include) - // *:*:-css all except css and dependents (explicit > implicit) - // *:*:-css:+effects same (excludes effects because explicit include is trumped by explicit exclude of dependency) - // *:+effects none except effects and its dependencies (explicit include trumps implicit exclude of dependency) - src.forEach(function( filepath ) { - var flag = filepath.flag; - - if ( flag ) { - - excluder(flag); - - // check for dependencies - if ( filepath.needs ) { - deps[ flag ] = filepath.needs; - filepath.needs.forEach(function( needsFlag ) { - excluder( flag, needsFlag ); - }); - } - } - }); - - // append excluded modules to version - if ( Object.keys( excluded ).length ) { - version += " -" + Object.keys( excluded ).join( ",-" ); - // set pkg.version to version with excludes, so minified file picks it up - grunt.config.set( "pkg.version", version ); - } - - - // conditionally concatenate source - src.forEach(function( filepath ) { - var flag = filepath.flag, - specified = false, - omit = false, - messages = []; - - if ( flag ) { - if ( excluded[ flag ] !== undefined ) { - messages.push([ - ( "Excluding " + flag ).red, - ( "(" + filepath.src + ")" ).grey - ]); - specified = true; - omit = !filepath.alt; - if ( !omit ) { - flag += " alternate"; - filepath.src = filepath.alt; - } - } - if ( excluded[ flag ] === undefined ) { - messages.push([ - ( "Including " + flag ).green, - ( "(" + filepath.src + ")" ).grey - ]); - - // If this module was actually specified by the - // builder, then set the flag to include it in the - // output list - if ( modules[ "+" + flag ] ) { - specified = true; - } - } - - filepath = filepath.src; - - // Only display the inclusion/exclusion list when handling - // an explicit list. - // - // Additionally, only display modules that have been specified - // by the user - if ( explicit && specified ) { - messages.forEach(function( message ) { - grunt.log.writetableln( [ 27, 30 ], message ); - }); - } - } - - if ( !omit ) { - compiled += grunt.file.read( filepath ); - } - }); - - // Embed Version - // Embed Date - compiled = compiled.replace( /@VERSION/g, version ) - // yyyy-mm-ddThh:mmZ - .replace( /@DATE/g, ( new Date() ).toISOString().replace( /:\d+\.\d+Z$/, "Z" ) ); - - // Write concatenated source to file - grunt.file.write( name, compiled ); - - // Fail task if errors were logged. - if ( this.errorCount ) { - return false; - } - - // Otherwise, print a success message. - grunt.log.writeln( "File '" + name + "' created." ); - }); - // Process files for distribution grunt.registerTask( "dist", function() { var stored, flags, paths, nonascii; @@ -540,7 +273,7 @@ module.exports = function( grunt ) { // Strip banners return contents // Remove the main jQuery banner, it'll be replaced by the new banner anyway. - .replace( /^\/\*!(?:.|\n)*?\*\/\n?/g, "" ) + .replace( /^\/\*![\W\w]*?\*\/\n?/g, "" ) // Strip other banners preserving line count. .replace( /^\/\*!(?:.|\n)*?\*\/\n?/gm, function ( match ) { return match.replace( /[^\n]/gm, "" ); @@ -585,7 +318,7 @@ module.exports = function( grunt ) { grunt.loadNpmTasks("grunt-jsonlint"); // Short list as a high frequency watch task - grunt.registerTask( "dev", [ "selector", "build:*:*", "jshint" ] ); + grunt.registerTask( "dev", [ "build:*:*", "jshint" ] ); // Default grunt grunt.registerTask( "default", [ "jsonlint", "dev", "pre-uglify", "uglify", "post-uglify", "dist:*", "compare_size" ] ); |