[英]Grouping shared dependencies of different AMD dependency trees with r.js
我有一個AMD項目,該項目基本上具有以下結構:
samples/sample1/main
________________
* sharedpackage1/subfolder1/module1
* sharedpackage1/subfolder2/module1
* ./localmodule1
* ./localmodule2
* ./subfolder1/localmodule1
samples/sample2/main
________________
* sharedpackage1/subfolder2/module2
* sharedpackage2/subfolder1/subfolder1/module1
* ./localmodule1
* ./localmodule2
* ./localmodule3
* ./subfolder1/localmodule1
* ./subfolder1/localmodule2
* ./subfolder2/localmodule1
samples/sample3/main
________________
* sharedpackage2/subfolder2/subfolder1/module1
* sharedpackage2/subfolder3/module1
* ./localmodule1
* ./localmodule2
* ./localmodule3
* ./localmodule4
* ./localmodule5
...
我想使用r.js
打包我的項目並最終得到...
shared.js
文件,其中至少包含一個樣本,其中包含sharedpackage1
和sharedpackage2
中的所有模塊-及其依賴關系 main.js
文件,其中包含該樣本特定的所有模塊(“本地”模塊) 注意...
sharedpackage1
和sharedpackage2
是可以包含數百個相互依賴的模塊的庫 sharedpackage1
和sharedpackage2
具有“ root”(或“ main”)模塊,該模塊具有包中的所有其他模塊作為依賴項 sharedpackage1
可以具有模塊從sharedpackage2
作為依賴 sharedpackage2
只有在其它模塊sharedpackage2
作為依賴 sharedpackage1
或sharedpackage2
中未在任何示例中使用的模塊不應包含在shared.js
現在,只要每個新樣本都有一個main.js
文件作為“ root”模塊,那么在沒有任何其他配置的情況下讓構建腳本自動拾取每個新樣本就不難了。 所以我會處理。
我從發現的任何文檔中似乎都無法發現是如何創建一個shared.js
文件,該文件僅包含sharedpackage2
中使用的來自sharedpackage1
和sharedpackage2
模塊,而沒有定義shared
模塊,我手動列出了每個示例的每個main.js
的所有獨立依賴項(這不適合我的用例)。
是否可以使用r.js
做到這r.js
? 如果是,我該如何實現?
我在Github上收到jrburke的以下答復:
example-multipage項目聽起來最接近您的描述。 但是,它可能沒有您想要的那么聰明。 “公共”層仍需要構建配置來列出要
include
一些頂級模塊。 它可以按include
數組中的頂級模塊跟蹤模塊,因此它不必是詳盡的圖形清單。如果您不想執行
example-multipage
進行的兩階段加載,這聽起來也可能需要bundles config 。 但是bundle config可能非常羅word。如果您希望進行細粒度的跟蹤和分組,則amodro-trace只會跟蹤模塊,並且您可以使用自己的構建腳本將跟蹤的模塊組合到所需的包中。 仍可能需要花費一些精力才能將這些內置文件轉換為運行時requirejs配置,該配置可用於有效地加載捆綁軟件。
對於模塊圖的復雜二等分和捆綁束,沒有可靠的簡單答案。 r.js並不是很聰明,因為它沒有做任何花哨的源代碼修改,例如,引入中間的
require([])
調用來加載捆綁包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.