我想传递一个requireJS config.json
和一个像main.js
这样的源文件,并收到所有依赖项的列表。
这可能是r.js
优化应用程序的一部分,但我找不到任何有关其内部结构的文档。
RequireJS是否提供这样的api来生成依赖列表?
答案 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
包含模块A
和B
,output-file2
包含模块C
和D
。
根据我上面建议的配置,您的主模块的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
必须执行代码(即使这样,代码执行可以发现也有限制。)