Javascript RequireJS优化器硬包含
我有一个大规模的客户端项目,我想把它捆绑成2个捆绑包,而不是1个 这是我的依赖关系树: 所需的输出将具有以下捆绑包:Javascript RequireJS优化器硬包含,javascript,requirejs,r.js,requirejs-optimizer,Javascript,Requirejs,R.js,Requirejs Optimizer,我有一个大规模的客户端项目,我想把它捆绑成2个捆绑包,而不是1个 这是我的依赖关系树: 所需的输出将具有以下捆绑包: main包括b 仅包含a的x(因为b已包含在第一个捆绑包中,我不希望用户下载一段代码超过一次) 以下是我的优化器配置: ({ appDir: 'www', baseUrl: 'js/', mainConfigFile: 'www/js/require.config.js', dir: 'www-release', modules: [ {
main
包括b
a
的x
(因为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
我知道:
包含
-明确包含不直接需要的模块及其整个依赖关系树exclude
-排除模块实际上是排除其整个依赖关系树,在发生冲突时覆盖include
excludeshalf
-包括模块的依赖关系树,不包括模块本身既然如此,我看不到一个明确的方法来实现我想要的,你能帮我吗?你需要像这样使用requirer.js捆绑功能 在require.config.js文件中
({
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
}
});
需要写包设置吗
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
}
});
这种说法有效吗<代码>{name:'x',exclude:['main','b']}?顺便问一下,你考虑过使用webpack吗?这样做行不通,两个包中都会缺少b。关于webpack-我有,但现在我被requirejs卡住了,我不知道切换到webpack的成本是多少。我觉得不会很快。OP想要创建两个捆绑包,而不是3个。在这种情况下,只需添加2个模块和2个捆绑包