-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
简化一下 module.conf 中 combine 的配置逻辑 #83
Comments
感觉上可以用,但直觉上是会有问题的,比如我有 回到最初的问题,我认为是不是这样就能解决: combine = {
foo: {
modules: [...]
},
bar: {
modules: [...], // 这里不要去管是否会重复
negative: ['foo'] // 表示要把`foo`里有的去掉
}
} 当然这样如果有N个配置,还是要写一些 |
是不应该互斥的,这里提到的
|
太复杂了,combine的object里有modules item,里面每个module还有modules item,看着都哭了 |
这应该不是最终的样子,只是用来说明一下采用的方式吧 |
我想的是这样的效果: var combine = {
'base': {
include: ['jquery', 'underscore']
},
'startup/foo': {
include: ['foo/**'],
negative: ['base']
},
'startup/bar': {
include: ['bar/**'],
negative: 'base'
},
'lazy/fooDetail': {
include: ['detail/foo/**'],
negative: ['foo']
}
} 上面的表示:
|
我理解 @leeight 的意思,是希望很多combine的模块里,公共的部分能有地方去进行统一配置。但是我觉得,combine是一个Object,每一个key代表一个希望被合并的module,这点最好还是不要变,否则会不太好理解。 可以为每个希望被合并的module,增加一些项,这些项在
这样,配置代码可能会变成这样: var base = [sys-base, echarts];
var combine = {
'common/dep': {
modules: base
},
'startup': {
modules: [bizCommon],
excludes: base
}
};
return combine; |
事实上不用数组,我们也可以根据每个配置项里的 |
没理解 |
立理指的应该是先处理哪个后处理哪个的问题 |
我是基于你的观点进行的补充,我也认为使用数组其实不是太合适,保持原有的对象的模式,让程序来计算这些对象间的互斥关系,进而决定build的顺序即可 |
最终推荐的配置应该就是这样子了吧? var combine = {
'base': {
modules: ['jquery', 'underscore']
},
'startup/foo': {
modules: ['foo/**', '!foo/bar'],
negative: ['base']
},
'startup/bar': {
modules: ['bar/**', '!bar/foo'],
negative: 'base'
},
'lazy/fooDetail': {
modules: ['detail/foo/**'],
negative: ['foo']
}
} |
我建议还是不要叫negative,毕竟negative这个单词还没在edp或者rjs里出现过。叫exclude或者excludes? |
关于includeShallows和excludeShallows,有时候还是有意义的。我为echarts写optimizer的时候就遇到了适用的场景。在项目的build中,excludeShallows的意义比includeShallows大些。不过我觉得可以不加,以后遇到在加好了 |
|
@otakustay 主席给点意见? |
现在配置模块合并的工作,需要写不少的代码,例如我想配置
dep
和startup
两个模块的话,就需要写如下的代码:这里面比较纠结的事情是一直在重复
negative
相关的代码(因为前面的模块合并了,其它的模块就不要再合并),为了简化这个事情,我打算这么做,支持
.v2
这个配置参数来识别是新的格式(因为模块名不太可能是.v2
开头吧)因为
modules
是一个数组,所以可以按照顺序来处理。合并完毕ria
之后,ria
包含的模块Id默认就变成了startup
的
exclude
配置,这样子来简化上面negative
的重复写法。另外新增了一个
exclude
这个是针对所有modules
里面配置的模块生效的,目的是简化negative(invalid)
的写法。系统中总会存在一些不太符合 amd 要求的文件,我们在发布的阶段需要忽略掉这些文件。
The text was updated successfully, but these errors were encountered: