2014-04-16 74 views
0

我想通過一個requireJS config.json和一個像我的main.js這樣的源文件,並接收其所有依賴項的列表。RequireJS是否提供了依賴API?

這可能是r.js優化應用程序的一部分,但我找不到任何有關其內部結構的文檔。

RequireJS是否提供了這樣的api來生成依賴列表?

回答

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的動態調用。並且Thins帶來了重大警告。如果你有這樣的:

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

然後findNestedDependencies: true將能夠檢測到存在的模塊foo的依賴關係。但是,有沒有辦法讓r.js來處理這個問題:

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

知道這個代碼加載什麼模塊,r.js將不得不執行代碼(即使在當時有什麼執行代碼可以發現一個限制)。