访问RequireJS路径配置

时间:2013-05-09 18:05:47

标签: javascript requirejs qunit

我在文档中注意到有pass custom configuration into a module的方法:

requirejs.config({
    baseUrl: './js',
    paths: {
        jquery: 'libs/jquery-1.9.1',
        jqueryui: 'libs/jquery-ui-1.9.2'
    },
    config: {
        'baz': {
            color: 'blue'
        }
    }
});

然后您可以从模块访问:

define(['module'], function (module) {        
    var color = module.config().color; // 'blue'
});

但是还有一种方法可以访问顶级路径配置吗?

define(['module', 'require'], function (module, require) {        
    console.log( module.paths() ); // no method paths()
    console.log( require.paths() ); // no method paths()
});

仅供参考,这不适用于生产现场。我正在尝试在QUnit测试页面中连接一些奇怪的调试/配置代码。我想枚举哪些模块名称定义了自定义路径。 This question触及了这个问题,但只让我查询已知的模块,而不是枚举它们。

2 个答案:

答案 0 :(得分:20)

它是可用的,但它是一个不应该依赖于生产代码的实现细节(您已经说过它不适用于,但是对其他人的公平警告!)

主要上下文的配置位于require.s.contexts._.config。其他配置也将挂起contexts属性,其中包含与之关联的任何名称。

答案 1 :(得分:5)

我不相信要求暴露在任何地方,至少我无法通过巨大的代码库找到它。有两种方法可以实现这一点。第一个也是最明显的是将配置定义为全局变量。第二个,也就是你想要的更接近的是创建一个require插件来覆盖load函数以将配置附加到模块:

define({
    load: function (name, req, onload, config) {
        req([name], function (value) {
            value.requireConfig = config;
            onload(value);
        });
    }
});