RequireJS是否提供依赖api?

时间:2014-04-16 09:41:49

标签: javascript node.js requirejs

我想传递一个requireJS config.json和一个像main.js这样的源文件,并收到所有依赖项的列表。

这可能是r.js优化应用程序的一部分,但我找不到任何有关其内部结构的文档。

RequireJS是否提供这样的api来生成依赖列表?

1 个答案:

答案 0 :(得分:0)

我不知道API。但是,如果您使用如下构建配置运行r.js(优化程序):

({
    baseUrl: ...,
    dir: ...,
    mainConfigFile: ".../config.js",
    findNestedDependencies: true,
    name: "main",
    optimize: "none"
})

然后,您将在指定的目录中获得build.txt文件,以存储优化的构建(dir的值)。此文件的一般格式为:

<output-file1>
----------------
<module A>
<module B>

<output-file2>
----------------
<module C>
<module D>

这告诉您输出文件output-file1包含模块ABoutput-file2包含模块CD

根据我上面建议的配置,您的主模块的build.txt文件中只应列出一个输出文件,其下列出的模块列表是它所依赖的所有模块。

在上面的配置中,我设置了optimize: "none",因为如果您唯一关心的是依赖项,那么可以节省时间。在实际构建中,您希望让r.js使用uglifyjs来缩小代码。另外,findNestedDependencies: true可以告诉r.js在代码中间找到require的动态调用。这些都会引发重大警告。如果你有这个:

if (blah)
    require(["foo"], function (foo) {...});

然后findNestedDependencies: true将能够检测到模块foo存在依赖关系。但是,r.js无法处理此问题:

var module_name = obj[key];
require([module_name], function (module) {...});

要知道此代码加载的模块,r.js必须执行代码(即使这样,代码执行可以发现也有限制。)