From b6dd1c67a63d19ff4b22b893f4d47f80f0d47fd9 Mon Sep 17 00:00:00 2001 From: jrburke Date: Wed, 30 Jan 2013 15:32:19 -0800 Subject: [PATCH] Remove the define.amd.jQuery check, close gh-1150. Cherry picked from 2.0 master 34c4e122a333bbfc80bd4f6e79db20f3a73ae5b3 Conflicts: src/exports.js --- src/.jshintrc | 1 + src/exports.js | 35 +++++++++++++++++++---------------- test/data/testinit.js | 4 +--- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/.jshintrc b/src/.jshintrc index 240302db4..1f094de68 100644 --- a/src/.jshintrc +++ b/src/.jshintrc @@ -18,6 +18,7 @@ "predef": [ "define", + "module", "jQuery" ] } diff --git a/src/exports.js b/src/exports.js index 88def50ba..365c97bf6 100644 --- a/src/exports.js +++ b/src/exports.js @@ -1,18 +1,21 @@ -// Expose jQuery to the global object -window.jQuery = window.$ = jQuery; +if ( typeof module === "object" && typeof module.exports === "object" ) { + // Expose jQuery as module.exports in loaders that implement the Node + // module pattern (including browserify). Do not create the global, since + // the user will be storing it themselves locally, and globals are frowned + // upon in the Node module world. + module.exports = jQuery; +} else { + // Otherwise expose jQuery to the global object as usual + window.jQuery = window.$ = jQuery; -// Expose jQuery as an AMD module, but only for AMD loaders that -// understand the issues with loading multiple versions of jQuery -// in a page that all might call define(). The loader will indicate -// they have special allowances for multiple jQuery versions by -// specifying define.amd.jQuery = true. Register as a named module, -// since jQuery can be concatenated with other files that may use define, -// but not use a proper concatenation script that understands anonymous -// AMD modules. A named AMD is safest and most robust way to register. -// Lowercase jquery is used because AMD module names are derived from -// file names, and jQuery is normally delivered in a lowercase file name. -// Do this after creating the global so that if an AMD module wants to call -// noConflict to hide this version of jQuery, it will work. -if ( typeof define === "function" && define.amd && define.amd.jQuery ) { - define( "jquery", [], function () { return jQuery; } ); + // Register as a named AMD module, since jQuery can be concatenated with other + // files that may use define, but not via a proper concatenation script that + // understands anonymous AMD modules. A named AMD is safest and most robust + // way to register. Lowercase jquery is used because AMD module names are + // derived from file names, and jQuery is normally delivered in a lowercase + // file name. Do this after creating the global so that if an AMD module wants + // to call noConflict to hide this version of jQuery, it will work. + if ( typeof define === "function" && define.amd ) { + define( "jquery", [], function () { return jQuery; } ); + } } diff --git a/test/data/testinit.js b/test/data/testinit.js index ea940cb63..87edfde29 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -19,9 +19,7 @@ function define( name, dependencies, callback ) { amdDefined = callback(); } -define.amd = { - jQuery: true -}; +define.amd = {}; /** * Returns an array of elements with the given IDs -- 2.39.5