Skip to content
Permalink
Browse files

Build: Add the ability to remove global exposure.

Ref #14016
  • Loading branch information
timmywil committed Dec 19, 2013
1 parent 09ede3d commit a6f474e699f95a90f95228bd525490151acc0451
Showing with 40 additions and 23 deletions.
  1. +1 −0 README.md
  2. +7 −0 build/tasks/build.js
  3. +0 −18 src/core.js
  4. +29 −0 src/exports/global.js
  5. +3 −5 src/jquery.js
@@ -84,6 +84,7 @@ Some example modules that can be excluded are:
- **offset**: The `.offset()`, `.position()`, `.offsetParent()`, `.scrollLeft()`, and `.scrollTop()` methods.
- **wrap**: The `.wrap()`, `.wrapAll()`, `.wrapInner()`, and `.unwrap()` methods.
- **exports/amd**: Exclude the AMD definition.
- **exports/global**: Exclude the attachment of global jQuery variables ($ and jQuery) to the window.
- **core/ready**: Exclude the ready module if you place your scripts at the end of the body. Any ready callbacks bound with `jQuery()` will simply be called immediately. However, `jQuery(document).ready()` will not be a function and `.on("ready", ...)` or similar will not be triggered.
- **deferred**: Exclude jQuery.Deferred. This also removes jQuery.Callbacks. *Note* that modules that depend on jQuery.Deferred(AJAX, effects, core/ready) will not be removed and will still expect jQuery.Deferred to be there. Include your own jQuery.Deferred implementation or exclude those modules as well (`grunt custom:-deferred,-ajax,-effects,-core/ready`).

@@ -196,6 +196,13 @@ module.exports = function( grunt ) {
excluded.splice( index, 1 );
}

// Replace exports/global with a noop noConflict
if ( (index = excluded.indexOf( "exports/global" )) > -1 ) {
config.rawText[ "exports/global" ] = "define(['../core']," +
"function( jQuery ) {\njQuery.noConflict = function() {};\n});";
excluded.splice( index, 1 );
}

grunt.verbose.writeflags( excluded, "Excluded" );
grunt.verbose.writeflags( included, "Included" );

@@ -15,12 +15,6 @@ var
// Use the correct document accordingly with window argument (sandbox)
document = window.document,

// Map over jQuery in case of overwrite
_jQuery = window.jQuery,

// Map over the $ in case of overwrite
_$ = window.$,

version = "@VERSION",

// Define a local copy of jQuery
@@ -202,18 +196,6 @@ jQuery.extend({

noop: function() {},

noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}

if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}

return jQuery;
},

// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
@@ -0,0 +1,29 @@
define([
"../core"
], function( jQuery ) {

var
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,

// Map over the $ in case of overwrite
_$ = window.$;

jQuery.noConflict = function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}

if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}

return jQuery;
};

// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
window.jQuery = window.$ = jQuery;

});
@@ -27,12 +27,10 @@ define([
"./offset",
"./dimensions",
"./deprecated",
"./exports/amd"
"./exports/amd",
"./exports/global"
], function( jQuery ) {

// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
return (window.jQuery = window.$ = jQuery);
return jQuery;

});

0 comments on commit a6f474e

Please sign in to comment.
You can’t perform that action at this time.