Drupal Composer 系列三:管理

通过

Drupal Composer 系列二:更快

,可以解决速度或访问的问题,系列三则回到 Composer 这个工具本身,介绍如何利用它解决实际的问题,充分发挥其 PHP 依赖管理的能力。

一、管理 Drupal 模块、主题

使用 Composer 安装模块、主题,是比较传统的用法,如Drupal Composer 系列一:初识中提到的添加 Bootstrap 主题:

composer require drupal/bootstrap:3.12

这里不做过多介绍,具体请参考Drupal Composer 系列一:初识提到的相关文档。

二、管理 Drupal 第三方库

Drupal 第三方库一般放在 Drupal 根目录下的 Libraries 文件夹里。比如 Slick 模块就依赖以下第三方库:

Slick library:

jqeasing,

Blazy

有没有一种方式可以让安装第三方库,像上面安装模块一样使用 composer require 就可以搞定呢?

答案是有的。而且还可以使用 npm 和 bower 包

https://www.npmjs.com/

https://bower.io/

怎么使用,有一个联姻

Composer + Bower + NPM = friends forever!

联姻的结果就是这个网站

https://asset-packagist.org/

有了这个联姻,安装第三方库 Slick 就变成了

composer require bower-asset/slick-carousel

或者

composer require npm-asset/slick-carousel

但是,这样得到的 Slick 库,文件夹名字会是 slick-carousel,并不满足 Slick 项目中对于 Slick 文件夹路径的要求,即 libraries/slick,如果是使用的Drupal Composer 系列一:初识中提到的 Composer template for Drupal projects 则默认位置应该是 web/libraries/slick 。

当然,这个是不需要手动去修改,修改 composer.json 文件的配置即可。

composer.json 文件配置示例:

"require": {

"bower-asset/slick-carousel":"1.8.0",

"drupal/slick":"^1.0",

"oomphinc/composer-installers-extender":"^1.1"

},

"extra": {

"installer-types": ["npm-asset","bower-asset"],

"installer-paths": {

"web/libraries/slick": ["bower-asset/slick-carousel"],

"web/libraries/{$name}": [

"type:drupal-library",

"vendor:npm-asset",

"vendor:bower-asset"

]

}

}

更多请参考:

https://github.com/oomphinc/composer-installers-extender

三、管理 Drupal 补丁

得益于一个 Composer 的插件:

https://github.com/cweagans/composer-patches

Composer 可以管理补丁,运行 composer install 或 composer require 命令时会自动应用补丁,无需手动运行 patch 或 git patch 等命令。

composer.json 文件示例配置:

"require": {

"cweagans/composer-patches":"^1.6",

},

"extra": {

"patches": {

"drupal/entityreference_dragdrop": {

"call_user_func_array() expects parameter 1 to be a valid callback, function 'entityreference_dragdrop_element_validate' not found":"https://www.drupal.org/files/issues/php_error_warning-2781381-4.patch"

},

"drupal/core": {

"List the jQuery UI dependencies explicitly":"https://www.drupal.org/files/issues/2926155-3.patch",

"Migrate system broken if content_translation enabled":"https://www.drupal.org/files/issues/2018-08-09/2991710-27.patch"

}

}

}

更多请参考相关文档。

四、管理自定义依赖包

我们还可以在 composer.json 文件中自定义依赖包并使用。

composer.json 文件示例配置:

"repositories": [

{

"type":"package",

"package": {

"name":"jungle/demo",

"version":"1.0.0",

"type":"drupal-library",

"dist": {

"url":"https://jungleran.com/demo.1.0.0.zip",

"type":"zip"

}

}

}

],

"require": {

"jungle/demo":"1.0.0",

},

然后就可以使用

composer require jungle/demo:1.0.0 -vvv

正常安装这个自定义依赖包了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815G1L0QJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励