我有一个大型的客户端项目,我想捆绑成2个捆绑而不是1个。
这是我的依赖树:
所需的输出是拥有这些包:
main
包含b
x
的a
(b
已包含在第一个包中,我不希望用户多次下载一段代码)。这是我的优化器配置:
({
appDir: 'www',
baseUrl: 'js/',
mainConfigFile: 'www/js/require.config.js',
dir: 'www-release',
modules: [
{
name: 'main',
exclude: ['x']
},
{
name: 'x',
exclude: ['main']
}
],
optimize: 'none',
removeCombined: true
})
我确实要从main
中排除x
的整个依赖关系树,但仍然包含我明确要求的模块,例如a
。
我知道:
include
- 明确包含不需要的模块及其整个依赖关系树。exclude
- 排除模块实际上排除了整个依赖关系树,覆盖了include
冲突。excludeShallow
- 包含模块的依赖关系树,不,包括模块本身。有了这个,我没有看到一个明确的方法来实现我想要的,你能帮忙吗?
答案 0 :(得分:1)
你需要使用像这样的requier.js捆绑功能。
在您的require.config.js文件中
需要写包装设置
bundles: {
x: ['files for x bundle'],
b: ['files for b bundle']
}
之后需要更改构建文件。
优化工具配置文件
({
appDir: 'www',
baseUrl: 'js/',
// mainConfigFile: 'www/js/require.config.js',// not need here
dir: 'www-release',
modules: [
{
name: 'main',
create: true, // this will create www-release/main.js file(main bundle)
include: ['main'],
exclude: ['x']
},
{
name: 'b',
create: true,
include: ['files for b bundle'],
exclude: ['main']
},
{
name: 'x',
create: true,
include: ['files for x bundle']
exclude: ['main']
}
],
optimize: 'none',
removeCombined: true
paths: {
//put paths object from requierjs.confige file
}
});