将Drupal 9升级到Drupal 10

将我们客户的Drupal网站从Drupal 9升级到Drupal 10是一件不容易的事。所以我整理了这个将Drupal 9升级到Drupal 10的小指南,希望能帮助你避免同样的头痛。

首先要做的是在您的项目中安装drupal upgrade_status模块并启用它。composer需要drupl/upgrade_status&&drush en upgrade_tatus。启用模块后,转到报告页面:报告>升级状态。在您的网站升级到Drupal 10之前,此页面应包含所有必要的升级和代码更改。

以下是我在需要升级的Drupal网站上必须做的事情,但您的项目里可能会有所不同。因为每个Drupal网站安装的模块不通,所以每个Drupal网站都是不同的,可能会带来自己独特的问题。您应该只在对站点进行全面测试后部署升级,并记住在将重大更改部署到生产之前,始终做好备份并准备好恢复策略。

一、Drupal9升级到Drupal10的大概步骤

1、按照此官方指南升级CKEditor 4至CKEditor 5。如果你有自定义的CKEditor4模块,这些模块没有升级到CKEditor5,那么你可以继续使用CKeditor4,但作为一个contrib模块。您可能无论如何都要安装它,以避免在部署Drupal 10升级时、配置导入尝试卸载CKEditor时出现错误。

2、将contrib模块升级到支持Drupal9和10的版本。

3、如果新版本只支持Drupal10,那么您可以将其作为替代版本添加到composer中,例如:“drupal/module_name”:“^1 | | ^2”,并且在drupal 9上仍然可以安装版本1。一旦安装了Drupal10,composer就会安装该模块的版本2。

4、扫描并修复Drupal 10弃用和兼容性的自定义模块。这不是很复杂,请检查upgrade_status页面上的所有自定义模块,然后单击“扫描所选模块”。现在,您可以单击“X问题”链接来查找需要修复的代码。大多数情况下,它只是一些实体查询修复、一些弃用修复和更新模块信息yml文件,以表明该模块支持Drupal10。请注意,如果您有任何禁用的自定义模块,而这些模块仅在特定情况下启用,那么您仍然需要启用它,并在此过程中修复代码弃用。

5、卸载过时的模块和主题,如Color、RDF、Seven等。你不能删除核心模块或主题,所以简单地卸载它们就足够了。您可能需要将Admin主题设置为Claro,并在此步骤中重新导出您的配置。使用drush主题:uninstall〔themes〕命令(简称drush thun)卸载主题。

6、删除仍分配给用户角色的孤立权限。在开始此步骤之前导出您的配置。upgrade_status模块将告诉您哪些权限需要从哪些角色转移。只需编辑user.role.[role].yml-config-ymls并从权限数组中删除相关行即可。请注意,在此步骤之后,您需要重新导入配置以刷新upgrade_status所说的内容。

有关升级准备的更多信息,请参阅官方文档。
https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-8-or-later/upgrading-from-drupal-9-to-drupal-10/overview

二、Drupal 10升级的具体说明:

1、请确保您可以在托管提供商上获得PHP8.1或更高版本。否则,您将无法在生产服务器上运行Drupal 10,因为Drupal 10需要PHP 8.1或更高版本。

2、如果您有任何带有Drupal10兼容补丁的仅Drupal9模块,请确保在尝试升级之前安装mglaman/composer-drupal-lenient。否则,这些模块将产生依赖性问题。安装后,您需要明确声明D9模块,这些模块应被视为D10模块。例如,要允许安装drupal/token,请运行:
composer config--merge--json extra.drupal-light.allowed-list'[“drupal/token”]'

3、如果你在Pantheon,请注意他们目前不支Drush 12。因此,您必须将Drush11作为依赖项进行安装。为此,运行composer需要drush/drush:^11。注意:你不需要更新pantheon.yml来说drush_version:11,它只会在推送时被拒绝。如果你在供应商文件夹中安装了Drush,Pantheon的Drush无论如何都会被忽略。

4、如果你遇到了依赖地狱,composer只是不让你升级到Drupal10,但你确信所有的依赖都是有序的,那么最快的方法就是删除composer.lock文件,删除vendor/web/core-web/modules/contrib-web/themes/contrib-web.profiles/contrib,然后运行composer.install,它将从composer.json文件安装并创建一个新的锁。

5、升级后不要忘记drush updb和drush cex。这意味着您应该在已安装并运行的D9数据库上运行升级。

6、如果你的自定义主题是基于classy的,那么不要忘记安装drupal/classy,因为它现在是一个contrib主题。

7、如果安装了Pathauto,则需要手动更新一些配置。也就是说,pathauto.patter.[name]配置文件已经更新了selection_decriteria插件。例如,node_type变为entity_bundle:node。

8、如果使用实体嵌入,则需要手动将CKEditor嵌入按钮(Entity_Embed模块)替换为SVG图标。

9、更新自定义模块/theme JS文件,使其使用core/one而不是core/jquery.once。

10、重新运行测试并修复API更新可能产生的任何问题。如果您遇到奇怪的测试问题,可能需要重新升级到Drupal10

11、如果安装了迁移,并且计划运行迁移,则需要将“迁移工具”和“迁移Plus”升级到版本6。如果使用migrate import的--group选项,那么还需要更改迁移配置以使用标记,因为--group选项在6中已不存在。

12、如果您使用weitzman/drupal测试特性,您应该将其升级到版本2或更高版本。

请注意,您可以忽略一些误报,例如phpstan无法扫描的空自定义配置文件,或者删除根据情况启用的禁用模块的建议。

特定Drupal站点的整个升级过程非常困难,因为它安装了许多不同的模块,有些模块甚至被锁定到特定的开发版本,还有一些补丁严重的模块旧主要版本需要升级,这意味着我们需要重写代码以使用模块API的新版本。除此之外,该网站还进行了大量定制,并具有许多面向用户的功能。

如果你正在将一个网站升级到Drupal 10,我希望这篇文章能帮助你。

三、成都长风云可以提供专业的Drupal升级服务

您现在可以开始准备网站升级到Drupal10Drupal 10令人兴奋的新功能和增强的现有功能为您的客户在所有接触点上创造卓越的数字体验铺平了道路。

在2023年,我们已经专注于Drupal开发13年。无论您计划从Drupal9升级到Drupal10,还是从旧版本迁移到Drupal9,我们都会让您的Drupal升级过程轻松轻松。免费咨询Drupal升级方案,电话:13795726015 或 扫微信二维码: