Drupal 8 使用 Composer 安装更新模块的依赖库

主题:
作者:anxin
日期:2017-06-30
分享:

从 Drupal 8.1 开始 Drupal 8 弃用了使用 Composer Manager 模块安装 Drupal 8 所需的 Composer 和 composer drupal-update 命令,而是使用官网的提供的标准安装后 Composer。关于在 Drupal 8 中安装 Composer 查看 Drupal 8 如何安装 Composer

注:所有的 Composer 安装依赖库操作都在 Drupal 8 网站根目录下进行。

1、Drupal 8 使用 Composer 安装特定依赖库

Drupal 8 中不论是核心还是模块,它们都有依赖的 PHP 代码库。这些依赖关系存放在核心或者是模块的 composer.json 文件中,如 Swift Mailer 模块的依赖:

"require": {
    "swiftmailer/swiftmailer": "~5.4.0",
    "html2text/html2text": "~4.0.1"
}

那么使用 Composer 安装 Drupal 8 模块 Swift Mailer 的依赖也非常简单:

composer require swiftmailer/swiftmailer
composer require html2text/html2text

2、Drupal 8 使用 Composer 升级依赖库

Composer 的规范是:一个项目包含一个 composer.json 文件,但在 Drupal 8 下每个模块都有一个 composer.json 文件,这就需要把这些 composer.json 文件整合成一个文件,然后再运行 composer 命令。

Drupal 8 使用 wikimedia/composer-merge-plugin 包来整合 composer.json 文件,使用 Composer 命令升级依赖库时,就会自动升级所有整合的依赖库。

2.1、Drupal 8 安装 wikimedia/composer-merge-plugin 依赖库

Drupal 8 默认是包含 wikimedia/composer-merge-plugin 依赖库。如果没有包含 wikimedia/composer-merge-plugin 依赖库,使用如下命令安装。

在 shell 中 cd 到 Drupal 8 的根目录,运行如下命令:

composer require wikimedia/composer-merge-plugin

2.2、Drupal 8 整合 composer 文件

使用 Drupal 8 根目录下的 composer.json 文件整合进其他 composer.json 文件。

假设我们模块的放在根目录的 modules 文件夹下,修改 Drupal 8 根目录的 composer.json 文件,添加如下代码:

"extra": {
  "merge-plugin": {
    "require": [
      "modules/example/composer.json"
    ]
  }
}

注:使用 include 代替 require 也可以。二者的区别是:require 加载不到文件时会报错,include 不会报错。

或者添加如下代码:

"extra": {
  "merge-plugin": {
    "include": [
      "modules/example/composer.json"
    ]
  }
}

2.3、运行 Composer 命令升级依赖库

在 Drupal 8 根目录下运行 Composer 命令,更新 Drupal 8 站点依赖

composer update
本文链接:https://www.yuzhi100.com/article/drupal-8-composer-anzhuang-php-ku

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!

作者:anxin