r.js with anonymous defines in self executing functions

318 views Asked by At

I am trying to optimize a durandal app into a single file using r.js via grunt and the durandal grunt task.

I am using js libraries that register with require inside a top level self executing function. The code below is from the breeze.js source but the code is conceptually the same in knockout, moment + others

if (typeof exports === "object" && typeof module === "object") {
    module.exports = def();
 } else if (typeof define === "function" && define["amd"]) {
    define(def);
} else {
    breeze = def();
}

The problem is that the r.js optimizer obviously cant insert a module id into the anonymous define.

THis means that when the optimized build file is loaded, breeze is registered as a module without a name so it be 'required' into other modules.

Whats the best way to handle this ? (modifying the source to define('breeze', [], def) would work for example).

Maybe patch the code so it 'knows' its running with almond and registers with a configurable name ?

0

There are 0 answers