davidbarratt/custom-installer

将自定义类型安装到自定义位置。

安装次数: 1,991,474

依赖关系: 7

建议者: 0

安全: 0

星级: 28

关注者: 6

分支: 9

开放性问题: 2

类型:composer-plugin

1.1.0 2020-12-11 16:40 UTC

This package is auto-updated.

Last update: 2024-09-12 01:04:50 UTC


README

Build Status

将根级别的自定义类型安装器路径添加到composer.json中。任何自定义类型都可以用来定义类型应该安装的路径。

安装

简单地在composer.json文件中引入这个库。通常这会作为自定义类型的依赖项添加,以确保在需要它的库之前加载该库。但是,只要它位于需要它的任何库之前,它也可以添加到根composer.json中。

{
    "require": {
        "davidbarratt/custom-installer": "1.0.*@dev"
    }
}

使用方法

添加的参数仅允许在根目录上,以避免多个库之间的冲突。这也防止了项目所有者不小心通过一个库擦除一个目录。注意:每个包将按照安装顺序放入其相应的文件夹。

配置必须添加到composer.jsonextra部分的custom-installer中。它与Composer安装程序的安装路径类似。

模式语法

配置数组的键是路径模式。您可以使用一些替换令牌

  • {$name}: 包的名称(例如,yamlsymfony/yaml
  • {$vendor}: 包的供应商(例如,symfonysymfony/yaml
  • {$type}: 对于Composer包类型(例如,librarydrupal-module

包过滤器

配置数组的值必须是一个数组。它包含给定模式的包过滤器。如果任何过滤器匹配,则应用该模式。

包类型过滤器

使用type:[package-type],您可以按包类型定义模式。您可以使用任何自定义包类型,并且不限于预定义集合

特定的Composer包类型metapackagecomposer-plugin永远不会由Custom Installer处理。

示例:对于包类型custom-library使用type:custom-library

包名称过滤器

您可以按完整的包名称([vendor]/[name])指定模式。

Custom Installer将仅处理存在配置以处理包类型的特定包。

示例

{
    "extra": {
        "custom-installer": {
            "web/": ["type:drupal-core"],
            "web/sites/{$name}/": ["type:drupal-site"],
            "custom/{$type}/{$vendor}/{$name}/": ["type:random-type"],
            "vendor/{$vendor}/{$name}/": ["type:library"],
            "web/sites/all/libraries/{$name}/": [
                "type:component",
                "ckeditor/ckeditor",
                "flesler/jquery.scrollto"
            ],
            "custom-folder-for-single-package": ["myvendorname/single-package"],
        }
    }
}

在示例中,我们想确保CKEditorJquery ScrollTo被放置在web/sites/all/libraries中。这两个包都是library包类型。为了改变这些包的路径,我们必须声明包类型的回退,即library。它应该保留在默认的供应商位置(因为library是默认的Composer包类型)。如果您不这样做,自定义安装程序由于Composer安装程序插件的工作方式,无法处理单个包(ckeditorflesler/jquery.scrollto)。