- 已编辑
痛点:很多软件项目依赖繁多(特别是 JS 的 node_modules 生态,这里遇到的是本站用的 Flarum,各种插件扩展都以第三方 PHP Composer 依赖形式),有时候遇到 bug 是发生在依赖的库中,解决起来还要处理包管理器的各种版本问题,很是麻烦,尤其是涉及到 CI 自动构建和部署的场景更加头痛,如果纯手动维护则很容易因为忘记而又带来新的 bug。
新的思路:利用 diff 生成的 patch 文件,把 patch 文件放在项目单独的目录,然后再 CI 中引入一个 apply 这些 patch 的流程,把魔改都 apply 过去。从而兼顾了透明与效率,diff / patch 都是古老的 Unix 社区时代就开始流传的工具,经过数十年检验,可靠性也有保障。
目前在 JS、PHP 的语言生态都有对应的解决方案:
JS:ds300/patch-package: Fix broken node modules instantly
PHP:cweagans/composer-patches: Simple patches plugin for Composer
今天也在本站的 bugfix 尝试了一下,感觉良好:https://github.com/0xffff-one/0xffff-flarum/issues/33
抛砖引玉一下