Drupal 处理composer废弃软件包的最佳实践是什么?

Drupal 处理composer废弃软件包的最佳实践是什么?,drupal,composer-php,Drupal,Composer Php,当我运行composer更新时,我偶尔会收到消息说包被放弃了,我应该使用不同的包,比如Package webflo/drupal core require dev被放弃了,你应该避免使用它。改用drupal/core-dev。我没有使用Composer的经验,所以我很好奇,更换过时软件包的最佳实践是什么 这些信息来自哪里?我不确定来源是否总是可靠的。我认为最好的做法是“您应该避免使用它”。如何/何时这样做还不清楚。废弃的软件包将不会收到更新,但composer将无法告诉您转换到推荐的替代方案有多

当我运行composer更新时,我偶尔会收到消息说包被放弃了,我应该使用不同的包,比如
Package webflo/drupal core require dev被放弃了,你应该避免使用它。改用drupal/core-dev。
我没有使用Composer的经验,所以我很好奇,更换过时软件包的最佳实践是什么


这些信息来自哪里?我不确定来源是否总是可靠的。

我认为最好的做法是“您应该避免使用它”。如何/何时这样做还不清楚。废弃的软件包将不会收到更新,但composer将无法告诉您转换到推荐的替代方案有多困难。可能您所要做的就是替换包,因为这只是一个名称更改,或者还需要修改代码

在您的示例中,只包含一个
composer.json
,并且所需的包与备选方案提供的包匹配。这意味着更换软件包应该像更改composer.json中的名称一样简单,然后执行
composer更新drupal/core dev

对于答案不那么简单的包,您必须依靠自动/手动测试来查看是否一切正常。静态代码分析工具也可能有所帮助。在进行更改之前,您必须对其进行设置,以便查看其输出的差异,并解决出现的新问题


您应该尽早切换到新的依赖项。保留它可能会在将来替换它时导致更多的工作,并且可能会带来安全风险(如果它过时且不安全)。我知道这并不总是可能的,使用类似于告诉您包中存在已知安全问题的内容可能会有助于延迟包并提供一些安全感。

感谢您的详细回复,因为对于composer和大多数web开发来说,这对我来说都是全新的。通常,当我用composer安装新的东西时,我只会说
composer需要drupal/module
。在这种情况下,在编辑
composer.json
时,我是否只需将一行
webflo/drupal core require dev
替换为'drupal/core dev',或者是否有更安全的方法来执行此操作?是的,更改
composer.json
是可以的,但您永远不应该修改
composer.lock
。如果您进行了更改,composer将告诉您这些更改是否尚未应用于锁。然后,您只需运行
update
,但要小心不要更新不需要的包。这就是为什么您应该附加包名或使用类似于
composer update--lock
,这样不会更新任何包。您可能还可以使用诸如remove&require之类的命令,但将其拆分为单个命令可能会导致中间步骤中出现问题,例如,由于缺少包。看起来您面临着从drupal project/drupal composer转换为core中composer的稍微特殊的情况。看见对于更一般的composer场景,通常不会直接编辑composer.json或composer.lock。需要更多的泛型作曲家用法指令的人应该考虑$Cuffer-Reave{{旧包}},然后$作曲家需要{{新包}}。这个答案不适用于我的情况。我在这里问过:-还有其他细节。我建议把这个问题留待讨论。刚接触包管理器的人会发现它很有价值。非常小的修改建议删除“意见”请求。