Answered by James Burke on RequireJS Github Issue’s page: Issue #447: Multiple Base URLs ยท jrburke/requirejs.
Turns out to be quite simple if data-main is the only entry point to your scripts(comments for more info), I solved my particular problem with the following:
My app’s index.html:
<script src="http://framework.jpillora.com/js/lib/require.js"
data-main="http://framework.jpillora.com/js/framework" > </script>
has the requirejs entry point set to framework.js:
var framework = ... //set using script elements src attribute
require.config({
baseUrl: 'js/',
//Framework paths
paths: {
'framework': framework,
'lib' : framework + 'js/lib',
'ext' : framework + 'js/ext',
'util' : framework + 'js/util'
},
//Shortcuts
map: {
'*': {
...
}
},
//Non-modularised libraries with deps
shim: {
...
}
});
require(['main']);
So instead of normally doing index.html->main.js, we’re adding an extra step index.html->framework.js->main.js, which gives the app code knowledge of paths to the framework code.
For example, in the app http://prettyprint.jpillora.com/, once require has loaded framework.js, it will setup paths to lib/... which to http://framework.jpillora.com/ and set the baseUrl as ./js/ so once main is required, it will have the base url set to it’s own domain and lib pointing to another domain.
Which results in require(['lib/foo', 'view/bar']);
resolving to:
http://framework.jpillora.com/js/lib/foo.js and
http://prettyprint.jpillora.com/js/view/bar.js
As displayed here, the app is only a main.js everything else comes from the framework:

So finally, whenever I load an app’s main.js via with the above framework.js, I then have access to all of my commonly used libraries and utility classes. See app source.
Also note, with the r.js optimiser and a nice local file structure, one can also optimise the app into a single js file pulling only what’s required from framework.