PHP作曲家,更新时不要丢失包代码更改
PHP composer, don't lose package code changes on update
我正在做一个项目,需要对所需的包进行许多编辑。一切正常,直到出现更新为止。更新包后,对其所做的所有更改都会立即替换为较新的版本(即使更新文件上没有实际更新)。
我的问题是,我怎样才能在修改后的包上保留我的编辑并且仍然能够 运行 composer update
而不必担心丢失我的编辑并重新开始。
简短回答:你不能。更新将始终提取存储库中存在的代码并覆盖本地副本。这就是包的工作方式。
更长的答案:你不能。编辑包是一个坏主意。如果您发现您需要编辑包,那么您实施它是错误的,因为不需要修改该代码。如果您需要额外的功能,您可以:
- 添加包装器。创建一个 class,称为外观,它实现了该包,但具有您想要的更改功能。
- 派生它并添加新功能,看看它是否可以添加到包中。您想要的功能可能对其他人有用,如果作者同意,可以将其合并到包中。然后它将存在于您未来的所有更新中。
- 分叉它,进行更改,然后包含它。如果由于某种原因前两个选项不起作用,您可以创建自己的项目分支并将更改 放在那里。然后,每当您需要更新包以获取最新代码时,您都可以创建一个新的分支并migrate/merge对其进行更改。
我正在做一个项目,需要对所需的包进行许多编辑。一切正常,直到出现更新为止。更新包后,对其所做的所有更改都会立即替换为较新的版本(即使更新文件上没有实际更新)。
我的问题是,我怎样才能在修改后的包上保留我的编辑并且仍然能够 运行 composer update
而不必担心丢失我的编辑并重新开始。
简短回答:你不能。更新将始终提取存储库中存在的代码并覆盖本地副本。这就是包的工作方式。
更长的答案:你不能。编辑包是一个坏主意。如果您发现您需要编辑包,那么您实施它是错误的,因为不需要修改该代码。如果您需要额外的功能,您可以:
- 添加包装器。创建一个 class,称为外观,它实现了该包,但具有您想要的更改功能。
- 派生它并添加新功能,看看它是否可以添加到包中。您想要的功能可能对其他人有用,如果作者同意,可以将其合并到包中。然后它将存在于您未来的所有更新中。
- 分叉它,进行更改,然后包含它。如果由于某种原因前两个选项不起作用,您可以创建自己的项目分支并将更改 放在那里。然后,每当您需要更新包以获取最新代码时,您都可以创建一个新的分支并migrate/merge对其进行更改。