PHP作曲家,更新时不要丢失包代码更改

PHP composer, don't lose package code changes on update

我正在做一个项目,需要对所需的包进行许多编辑。一切正常,直到出现更新为止。更新包后,对其所做的所有更改都会立即替换为较新的版本(即使更新文件上没有实际更新)。

我的问题是,我怎样才能在修改后的包上保留我的编辑并且仍然能够 运行 composer update 而不必担心丢失我的编辑并重新开始。

简短回答:你不能。更新将始终提取存储库中存在的代码并覆盖本地副本。这就是包的工作方式。

更长的答案:你不能。编辑包是一个坏主意。如果您发现您需要编辑包,那么您实施它是错误的,因为不需要修改该代码。如果您需要额外的功能,您可以:

  1. 添加包装器。创建一个 class,称为外观,它实现了该包,但具有您想要的更改功能。
  2. 派生它并添加新功能,看看它是否可以添加到包中。您想要的功能可能对其他人有用,如果作者同意,可以将其合并到包中。然后它将存在于您未来的所有更新中。
  3. 分叉它,进行更改,然后包含它。如果由于某种原因前两个选项不起作用,您可以创建自己的项目分支并将更改 放在那里。然后,每当您需要更新包以获取最新代码时,您都可以创建一个新的分支并migrate/merge对其进行更改。