【问题标题】:What is the best practice for handling composer abandoned packages?处理作曲家废弃包的最佳实践是什么?
【发布时间】:2020-04-19 14:27:54
【问题描述】:

当我运行 Composer 更新时,我偶尔会收到包被废弃的消息,我应该改用其他包,例如 Package webflo/drupal-core-require-dev is abandoned, you should avoid using it. Use drupal/core-dev instead. 我没有使用 Composer 的经验,所以我很好奇被视为什么替换过时软件包的最佳实践。

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

【问题讨论】:

  • 我建议保留这个问题。不熟悉包管理器的人会发现它很有价值。非常小的修改建议删除“意见”请求。

标签: drupal composer-php


【解决方案1】:

我认为从“您应该避免使用它”的信息中可以清楚地看出最佳做法。如何/何时执行此操作尚不清楚。废弃的包将不会收到更新,但作曲家将无法告诉您过渡到推荐的替代方案有多么困难。可能您所要做的就是替换包,因为它只是名称更改或必须修改您的代码。

在您的情况下,webflo/drupal-core-require-dev 仅包含 composer.json,并且所需的包与替代 drupal/core-dev 提供的包匹配。这意味着替换包应该像更改 composer.json 中的名称然后执行 composer update drupal/core-dev 一样简单。

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

您应该尽早切换到新的依赖项。留下它可能会在将来更换它时导致更多的工作,并且可能会带来安全风险(如果它已过时且不安全)。我知道这并不总是可行的,使用 roave/security-advisories 之类的东西来告诉您包中何时存在已知的安全问题可能有助于推迟它并提供一些安全感。

【讨论】:

  • 感谢您的详细回复,作为一个对作曲家和大多数 Web 开发完全陌生的人,这对我来说都是全新的。通常当我用 composer 安装新东西时,我只会说composer require 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 转换为核心作曲家的稍微特殊的情况。见youtu.be/ddPL91oHQdU?t=1824。对于更一般的作曲家场景,您通常不会直接编辑 composer.json 或 composer.lock。需要更通用的 composer 使用说明的人应该考虑 $ composer remove {{old package}} 然后 $ composer require {{new package}}。
  • 这个答案不适用于我的情况。我在这里问过这个问题:drupal.stackexchange.com/q/302682/12076 - 带有其他详细信息。
猜你喜欢
  • 2017-04-26
  • 2011-09-22
  • 2013-10-15
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多