mile23/drupal-merge-plugin

Drupal贡献项目的依赖项发现。

安装: 290

依赖者: 0

建议者: 0

安全性: 0

星标: 7

关注者: 3

分支: 0

开放问题: 1

类型:composer-plugin

dev-master 2016-09-25 13:55 UTC

This package is auto-updated.

Last update: 2019-12-17 01:48:29 UTC


README

注意:此项目处于开发中。目前甚至没有发布。想要帮忙?试试使用它。提交问题。运行测试。编写测试。谢谢。:-)

此插件目前正在考虑用于 drupalci_testbot。想要参与这个决策?请在这里讨论:https://www.drupal.org/node/2597778

什么?

drupal-merge-plugin 是一个 Composer 插件,允许 Drupal 扩展指定自己的基于 Composer 的依赖项,而无需额外的基础设施。这包括 Drupal 模块、主题和配置文件。

此插件是 plugin_manager 模块概念的演变,使用 Drupal 扩展发现来合并基于 Composer 的依赖项。

它基于维基媒体项目的 composer-merge-plugin,并继承了该项目的一些行为。

您可以在以下位置阅读维基媒体 composer-merge-plugin 的文档: https://github.com/wikimedia/composer-merge-plugin

为什么?

packagist.drupal-composer.org 添加到您的 composer.json 文件中就足以帮助它找到 Drupal 扩展,并安装它们以及它们的依赖项。

但是,如果您需要更新或重新安装(没有锁定文件),那么这还不够来管理这些依赖项。

有了这个插件,就可以做到这一点。

一旦您开始使用此插件,它将在您的 Drupal 项目文件系统中搜索 composer.json 文件,然后尝试满足它们。如果无法满足(由于版本约束等),Composer 将会通知您。

请注意,插件不关心给定扩展是否启用。它将满足 Drupal 文件系统中的所有扩展,无论扩展的启用状态如何。

如何?

在命令行中,键入以下内容

$ composer require mile23/drupal-merge-plugin

这会将插件添加到您的 Drupal 项目中。

为了使用 Composer 获取 Drupal 扩展,您必须将特殊的 Drupal Packagist 克隆添加到您的 repositories 部分。有关说明,请参阅: https://www.drupal.org/node/2718229

基本上,将类似以下的仓库添加到您的 composer.json 文件中

"repositories": {
    "drupal": {
        "type": "composer",
        "url":  "https://packages.drupal.org/8"
    }
}

然后您可以添加 Drupal 扩展

$ composer require drupal/your-module-here

您可以将命令行脚本添加到您的 composer.json 文件中,如下所示

"scripts": {
    "list-extensions": "Mile23\\DrupalMerge\\Script::listExtensions",
    "list-managed-extensions": "Mile23\\DrupalMerge\\Script::listManagedExtensions",
    "list-unmanaged-extensions": "Mile23\\DrupalMerge\\Script::listUnmanagedExtensions",
},

完成之后,您可以通过它们的 Composer 状态列出可用的模块

  • composer list-extensions 会列出所有可发现的具有 composer.json 文件的 Drupal 扩展。
  • composer list-managed-extensions 会列出当前 Composer 包中 requires 部分的 Drupal 扩展。重申一下:如果扩展在您的 composer.json 文件中,它就会出现在这个列表中。
  • composer list-unmanaged-extensions 会列出具有 composer.json 文件的扩展,但未列在当前项目的依赖项中。这些可能是作为 tar 包下载的扩展。

我的贡献模块的 composer.json 文件应该如何看起来?

Drupal 扩展不应指定它们依赖于此插件。只有项目级别的 composer.json 文件应使用此插件。

此插件的行为可能与 Drupal 社区构建的其他 Composer 解决方案冲突。

您可以为每个扩展提供一个 composer.json 文件,在任何由正常 Drupal 模块发现支持的文件夹深度。

您的 composer.json 文件必须与扩展的 .info.yml 文件位于同一目录。

您的 composer.json 文件应通过在命令行中运行 composer validate 的测试。

如果您的 composer.json 文件未指定 requires 和/或 requires-dev,则此插件可能对您非常有用。

drupal-merge-plugin 将使用与 wikimedia/composer-merge-plugin 相同的合并规则。也就是说,将合并 requiresrequires-dev,以及 composer.json 的其他部分。有关更多信息,请参阅 composer-merge-plugin 文档。

您不应为您的扩展使用 Composer 的 autoload 功能。Drupal 会根据需要自动加载模块。

drupal-merge-plugin 使用与 composer-installers 相同的项目类型命名约定。这意味着您的模块的 type 字段应为 drupal-module。这允许 composer-installer 插件将您的模块放置在正确的目录中,并允许 drupal-merge-plugin 发现它。