Composer如何处理本地更改

时间:2015-04-09 08:21:10

标签: php composer-php

假设我通过Composer安装package for CKEditor并手动add new skins and plugins to it。当下一次更新基础包时,Composer将如何处理这个问题?

是否会覆盖整个软件包目录(删除本地更改)或仅更新列出的文件?

此外,I'm having problems updating one package to newest version并在本地手动更新。然而,composer status显示No local changes。这是否意味着,Composer本身不检查每个包的文件夹内容以进行本地更改,只对composer.jsoncomposer.lock之间的差异进行操作?

2 个答案:

答案 0 :(得分:2)

Composer将更新到与您在composer.json中添加的版本匹配的最新版本,是 - 它将覆盖现有软件包(包括您的所有更改),但它将忽略软件包中不存在的文件。 / p>

命令:"作曲家状态"显示文件中属于指定包的所有更改。如果您要更改某个文件,那么它将显示在该列表中,但如果您要添加新文件,那么当然不会。

通常,您的方法可能在某些情况下有效,但我强烈建议不要这样做。当您创建一些文件时会出现问题,然后将其添加到包中(例如在较新版本中)。

您应该使用所有包"按原样#34;直接在您的应用程序中,并在其中添加新的东西,或其他配置等。

答案 1 :(得分:1)

  

是否会覆盖整个软件包目录(删除本地更改)或仅更新列出的文件?

是。更新包时,Composer会删除包的当前版本并安装新包。

  

此外,我在将一个软件包更新到最新版本时遇到问题,并在本地手动更新。然而,作曲家状态显示没有本地更改。这是否意味着,Composer本身不检查每个包的文件夹内容以进行本地更改,只对composer.json和composer.lock之间的差异进行操作?

composer.json中的1. *部分告诉Composer仅在1. *版本范围内有新版本时才更新。新提交不是新版本。程序包所有者创建具有更高版本号的新版本时,将提供新的更新。如果您想在每次新提交后更新,您应该更改" 1。*" to" dev-master"。