感谢 @0x709394 也加入了修 BUG 研究插件的行列,一波鸡血注入,又有了优化开发流程的动力。
所以今天重新梳理了站点的代码发布方案,各个自定义的插件从聚集在一个仓库分拆成独立的仓库,然后通过 git submodule 来组织各个仓库的代码更新。
除了脚手架项目涉及敏感信息之外,把核心和语言包、还有各个插件的魔改都开源了,日后会把脚手架的公共部分也抽离出来,方便折腾。
目前定制了包括核心在内的 3 个组件,都在 0xFFFF 组织的仓库下:
https://github.com/0xffff-one/core
https://github.com/0xffff-one/lang-simplified-chinese
https://github.com/0xffff-one/user-bio
更新架构之后,修复了中文语言下日期显示,语言包文案,重新加入了个性签名插件,未来 LaTeX 和中文搜索等插件也可在此加入。
欢迎研究和折腾,若发现代码中潜在的安全问题,请联系我:zgq354@gmail.com
背景
Flarum 本身设计了一个灵活的架构:网站主体只是一个脚手架,负责各种配置和文件等,然后用依赖管理工具 composer 的机制,所有的核心功能和扩展在脚手架的角度都以第三方插件的形式加载。官方再开发和维护核心插件,开发者可根据自己的需要去定制插件扩展。其中,脚手架负责存储,数据库,文件系统等工作,插件只处理业务逻辑,两者之间是天然解耦的。
以前的 0xFFFF 在装好依赖以后,直接抛弃了 composer 的存在,然后一股脑去修改依赖包的内容,再 SFTP 同步到生产环境,整体比较混乱,没有发挥出这种程序架构设计的优势。结果忙起来以后都忘记自己对它做过啥,就改不动了,被迫升级。
迁移到 Docker 的环境,参考了 使用 Docker 和 Traefik 搭建 Flarum 轻论坛应用 - 苏洋博客 来操作。思想是,不需要定制的部分则引用开源的代码,定制部分则从 vendor 里面抽出来,专门用一个仓库跟踪。一开始对 git 的 submodule 不太熟悉,弄完才发现这个仓库还是作为网站主项目的 submodule 存在。
今天在魔改一些插件和 i18n 文案的时候,只用一个仓库的弊端便显现出来,每次需要手动 copy 代码,很不方便。git submodules 不恰好就是解决这个需求的存在吗?所以就有了以上的修改。
想来,架构的更新也不是一蹴而就的事,而是在实践中不断增加需求的背景下,持续重构的过程~