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
)。