如果你经常检查并删除弃用代码的话,那么从Drupal8升级到Drupal9应该很容易。
Drupal9的目标是在2020年6月发布,许多人想知道他们需要做那些准备。
好的、重要的消息是,从drupal8升级到drupal9应该非常简单——比从Drupal7升级到Drupal8要简单得多。
唯一需要注意的是,你需要很好地管理“弃用代码”。
如果你的站点没有使用Drupal 9中计划删除的废弃代码,那么升级到Drupal 9将很容易。实际上,它应该像一个小版本升级一样简单(比如从Drupal 8.6升级到Drupal 8.7)。
什么是弃用代码?
Drupal中的代码在不应该再使用时被标记为“deprecated”。通常,不推荐使用这些代码,应该使用更好的替代方法。
例如,在Drupal 8.0.0中,我们不推荐\Drupal::l($text, $url)。你应该使用Link::fromTextAndUrl($text, $url),而不是使用\Drupal::l()。\Drupal::l()函数被标记为要删除,它是清理工作的一部分;Drupal 8有太多的方法来生成链接。
弃用的代码在被删除之前将继续工作一段时间。例如,\Drupal::l()继续在Drupal 8.7中工作,尽管它在Drupal 8.0.0中已经被标记为废弃三年多。这给模块维护人员充足的时间来更新他们的代码。
当我们发布Drupal9时,我们将“删除”大部分弃用代码。在我们的示例中,这意味着\Drupal::l()在Drupal 9中不再可用。
换句话说:
-
任何没有使用不推荐代码的Drupal8模块都将继续在Drupal9中工作。
-
任何使用废弃代码的Drupal 8模块都需要在发布Drupal 9之前进行更新,否则它将不能在Drupal 9中正常运营。
如果你感兴趣,可以通过 https://www.drupal.org/core/deprecation 了解更多关于Drupal的弃用策略。
如何知道我的站点是否使用了弃用代码?
有几种方法可以检查你的站点是否使用了弃用代码。
如果你是Drupal站点的开发人员,请运行 drupal-check。Matt Glaman (Centarro)开发了一个名为 drupal-check 的静态PHP分析工具,你可以对代码库运行该工具来检查是否有废弃的代码。我建议以自动化的方式运行drupal-check作为开发工作流的一部分。
如果你是站点所有者,安装Upgrade Status module。这个模块是Acquia开发的。该模块在drupal-check之上提供了一个图形用户界面。目标是为站点迁移到Drupal9提供易于使用的准备情况评估。
如果你在Drupal.org上维护一个项目,请启用Drupal.org的 Drupal.org's testing infrastructure 来检测废弃代码的使用情况。有两种互补的方法可以做到这一点:你可以运行静态弃用分析和/或在调用弃用代码时将现有测试配置为失败。两者都可以在你的drupalci.yml配置文件设置。
如果你在站点上使用的贡献模块中发现不赞成使用的代码,请考虑在Drupal.org上的模块问题队列中提交一个问题(在检查了没有创建任何问题之后)。如果可以,提供一个补丁来修复这个弃用,并与维护人员进行接触以提交它。
更新我的代码有多难?
虽然有一些废弃的地方需要更详细的重构,但是很多都是简单的搜索和替换。
你可以查看API文档,了解关于如何纠正这种弃用的说明。
我何时可以开始更新我的代码?
我鼓励你从今天开始。当你更新Drupal 8代码以使用最新和最好的APIS时,你可以立即从这些改进中获益。没有理由等到Drupal 9发布。
Drupal 8.8.0将是最后一个不支持Drupal 9的版本。今天,我们还不知道所有的反对意见。
我需要多长时间来更新我的代码?
目前的计划是在2020年6月发布Drupal9, 2021年11月结束Drupal8。
我们鼓励贡献模块的维护人员在2020年6月之前停止使用废弃代码,这样每个人都可以在Drupal 9发布的当天升级到Drupal 9。
Drupal.org项目维护者应该记住扩展的安全覆盖策略,这意味着Drupal 8.8在Drupal 9.1发布之前仍然受到支持。希望同时支持Drupal 8.8和Drupal 9.0的贡献项目可能需要使用两个分支。
贡献模块准备好了吗?
Dwayne McDaniel (Pantheon) 使用 drupal-check 分析了Drupal 8的所有7,000个贡献模块。
目前,44%的模块没有发出弃用警告。其余56%的模块需要更新,但是大多数模块只有不到三个弃用警告。