Multi-asset AMD

by andrewdavey

JavaScript

var assets = []; // window level variable defined in first asset.

assets.push(function(app, $) {
    var Foo = {};
    
    this.Foo = Foo;
});

assets.push(function(app, $) {
    var Foo = this.Foo;
    
    var Bar = {};
    this.exports.Bar = Bar;
    
    this.Bar = Bar;
});

// appended to final asset:
define(["scripts/app", "scripts/jquery"], function() {
    var module = { exports: {} };
    for (var i = 0, length = assets.length; i < length; i++) {
        assets[i].apply(module, arguments);
    }
    return module.exports;
});

// TODO: Need a way to alias bundle paths to variable names
// e.g. /// <reference path="script/jquery" as="$" />