diff --git a/lib/loader/loader.js b/lib/loader/loader.js index deb9973..677ced6 100644 --- a/lib/loader/loader.js +++ b/lib/loader/loader.js @@ -58,7 +58,9 @@ var loader, define, requireModule, require, requirejs; }; loader = { + __aliases: {}, noConflict: function(aliases) { + this.__aliases = aliases; var oldName, newName; for (oldName in aliases) { @@ -203,7 +205,11 @@ var loader, define, requireModule, require, requirejs; Module.prototype.makeRequire = function() { var id = this.id; var r = function(dep) { - return require(resolve(dep, id)); + if (loader.__aliases && loader.__aliases.require) { + return window[loader.__aliases.require](resolve(dep, id)); + } else { + return require(resolve(dep, id)); + } }; r['default'] = r; r.moduleId = id; diff --git a/tests/all.js b/tests/all.js index 94f16d6..9215047 100644 --- a/tests/all.js +++ b/tests/all.js @@ -38,6 +38,7 @@ QUnit.module('loader.js api', function(hooks) { this._define = define; this._loader = loader; this._require = require; + this._requirejs = requirejs; heimdall._session.reset(); tree = new Heimdall.Tree(heimdall); }); @@ -46,6 +47,7 @@ QUnit.module('loader.js api', function(hooks) { define = this._define; loader = this._loader; require = this._require; + requirejs = this._requirejs; requirejs.clear(); }); @@ -1842,4 +1844,17 @@ QUnit.module('loader.js api', function(hooks) { define.alias('foo', 'foo/bar'); assert.equal(require('foo/bar'), 'foo'); }); + + QUnit.test('no conflict aliases', function(assert) { + var aliases = { + require: 'newRequire', + requirejs: 'newRequireJS' + }; + + loader.noConflict(aliases); + + assert.strictEqual(aliases, loader.__aliases); + }); + + });