-
Notifications
You must be signed in to change notification settings - Fork 16
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
[RFC] Manifest 应做到环境无关 #33
Comments
@noahziheng 这个是考虑说的:“一次构建产物,根据需求可以部署到多个环境中去的“ 的场景吧?config plugin 都涉及到这些,看你也提了在 load 阶段做 merge 等工作。最后这个依赖回环检查在 scan 阶段失效,是怎么理解呢? |
@DuanPengfei 这个指的是 scanner 里不处理 env 相关的文件过滤,env 的逻辑放到启动期判断,这样可以实现一份 mainfest 多环境部署。 |
@DuanPengfei “依赖回环检查在 scan 阶段失效”指的是现在计算插件排序的时候利用拓扑排序检测回环,这个机制依赖enable和dependency,如果scan阶段环境无关,那就需要不同环境的path/package对应的meta都要纳入算序流程且enable默认为true,那这个阶段的回环检测就没有实际意义了 |
@noahziheng @hyj1991 那是不是可以理解,如果要做到构建时环境无关,还要能够检测出插件的依赖顺序和 enable 是否存在错误,就需要把扫描到的 如果 scanner 不做这个,那就要启动前再做一次 plugin 加载顺序的计算? 这个也就是我们把 scanner 放入到构建期间,想要一个更好的启动速度,而引入的需要解决的问题? |
那其实还不止 plugin 吧,跟 env 联动,有 merge 等需求的,如:config,都会出现这种问题? |
是的,scanner 内计算需要更严谨的逻辑,启动前再计算一遍成本更高,items 就白改了 |
@DuanPengfei config 还好,因为默认都是要生效的,manifest 本来就会拿全量进去,启动时才会真实地合并,plugin 就完全不同,enable 和加载的 path 会直接影响 manifest 的内容 |
@noahziheng @hyj1991 那 scanner 忽略单一环境,把已经声明的所有 |
@DuanPengfei 前面已经提过,这是可行方案,但因为 pluginConfig 内的 enable 和 path/package 干扰,这个方案没有想象地这么简单 |
嗯嗯,可以简单写个 demo 吗? |
@DuanPengfei 我在尝试写,但是逻辑还没理清,提 RFC 的目的就是先列在这里供讨论,思考一下再提 PR |
经过讨论,已经修改为环境有关 |
基于 #29 的实现,目前会在 Scanner 中依据环境变量生成 Manifest,但通常逻辑中,可能会在构建出 manifest 后在不同环境中运行。
The text was updated successfully, but these errors were encountered: