-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: