我有一个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
和{{1}的模块的sharedpackage1
文件在没有定义sharedpackage2
模块的情况下在样本中使用的,我手动列出每个样本的每个shared
的所有单独依赖项(这不适合我的用例)。
是否可以使用main.js
执行此操作?如果是,我该如何实现?
答案 0 :(得分:0)
我在Github上从jrburke收到了以下答案:
example-multipage project听起来与你描述的最接近。 但是,它可能不像你想要的那么聪明。 “共同”层 仍然需要构建配置列出一些顶级模块
include
。它可以通过中的顶级模块跟踪模块include
数组,因此不需要是详尽的图表 列表。如果你不这样做,听起来你可能想要bundles config 想要进行
example-multipage
所做的两阶段加载。但 捆绑配置可能非常罗嗦。如果你想要非常精细的跟踪和分组, amodro-trace将只跟踪模块,您可以使用您的 自己的构建脚本将跟踪的模块组合到您的捆绑包中 想。转动那些构建的文件仍然需要一些努力 进入运行时requirejs配置,可用于有效加载 捆绑包。但
模块图的复杂二等分没有简单明了的答案 并分开束。就没有做而言,r.js并不是很聪明 任何花哨的源修改,例如,引入中间体
require([])
调用加载包。