Allow AMD module loader to set noGlobal in config to prevent moment polluting the global space.
Option has to be set ny the user otherwise everything loads as previously.

Loader would now look like this to choose noGlobal

/*jslint maxerr: 50, indent: 4, browser: true */

(function (global, undef) {
    "use strict";

    var projectString = "myProject",
        momentCDN = "//cdnjs.cloudflare.com/ajax/libs/moment.js/2.1.0/moment.min",
        momentString = "moment";

    (function (name, definition) {
        if (global.module !== undef && global.module.exports) {
            global.module.exports = definition(global.require(momentCDN));
        } else if (typeof global.define === "function" && global.define.amd) {
            var projectPaths = {};

            projectPaths[momentString] = momentCDN;
            global.require.config({
                paths: projectPaths
            });

            global.define(name, [momentString], definition);
        } else {
            global[name] = definition(global.moment);
        }
    }(projectString, function (moment) {
        delete global[momentString];

        moment.fn.newFunction = function () {
            // code
        };

        function MyFunction() {
            // code
        }

        return {
            "MyFunction": MyFunction,
            "momentPrivate": moment
        };
    }));
}(this));

requirejs(["myProject"], function (myProject) {
    "use strict";

    console.log("Private", myProject.momentPrivate);
    console.log("Global", window["moment"]);
});
Removed the cached Math variables that should have been in a different branch
Merge pull request #1089 from Xotic750/feature/noGlobal

Allow AMD module loader to set noGlobal in config to prevent moment poll...