davidbarratt / custom-installer
将自定义类型安装到自定义位置。
Requires
- composer-plugin-api: ~1 || ~2
Requires (Dev)
- composer/composer: ~1.0@dev || ~2.0@dev
- phpunit/phpunit: ~4.1
- squizlabs/php_codesniffer: ~2.5
This package is auto-updated.
Last update: 2024-09-12 01:04:50 UTC
README
将根级别的自定义类型安装器路径添加到composer.json中。任何自定义类型都可以用来定义类型应该安装的路径。
安装
简单地在composer.json文件中引入这个库。通常这会作为自定义类型的依赖项添加,以确保在需要它的库之前加载该库。但是,只要它位于需要它的任何库之前,它也可以添加到根composer.json中。
{
"require": {
"davidbarratt/custom-installer": "1.0.*@dev"
}
}
使用方法
添加的参数仅允许在根目录上,以避免多个库之间的冲突。这也防止了项目所有者不小心通过一个库擦除一个目录。注意:每个包将按照安装顺序放入其相应的文件夹。
配置必须添加到composer.json的extra部分的custom-installer中。它与Composer安装程序的安装路径类似。
模式语法
配置数组的键是路径模式。您可以使用一些替换令牌
{$name}: 包的名称(例如,yaml的symfony/yaml){$vendor}: 包的供应商(例如,symfony的symfony/yaml){$type}: 对于Composer包类型(例如,library,drupal-module)
包过滤器
配置数组的值必须是一个数组。它包含给定模式的包过滤器。如果任何过滤器匹配,则应用该模式。
包类型过滤器
使用type:[package-type],您可以按包类型定义模式。您可以使用任何自定义包类型,并且不限于预定义集合。
特定的Composer包类型metapackage或composer-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"],
}
}
}
在示例中,我们想确保CKEditor和Jquery ScrollTo被放置在web/sites/all/libraries中。这两个包都是library包类型。为了改变这些包的路径,我们必须声明包类型的回退,即library。它应该保留在默认的供应商位置(因为library是默认的Composer包类型)。如果您不这样做,自定义安装程序由于Composer安装程序插件的工作方式,无法处理单个包(ckeditor和flesler/jquery.scrollto)。