4.1. 如何为我的框架自定义一个扩展包安装目录?
优质
小牛编辑
142浏览
2023-12-01
每个框架都有一个或多个不同的拓展包安装目录。Composer 可以通过使用 composer/installers 来配置拓展包到其它的目录,而不是默认的vendor
目录。
如果你是一个包作者并且希望你的包被安装到自定义的目录中,只需要安装 composer/installers
依赖,并设置适当的type
属性。 这是常见的方式,如果你的包专门用于一个特定的框架,如 CakePHP、Drupal 或 WordPress。下面是一个 WordPress 主题的 composer.json 文件实例:
{
"name": "you/themename",
"type": "wordpress-theme",
"require": {
"composer/installers": "~1.0"
}
}
现在当你用 Composer 安装这个主题时,它就会被放置在 wp-content/themes/themename/
目录中。 查看当前支持的 type 类型。
作为一个包使用者你可以设置或覆盖拓展包的安装路径,需要依赖composer/installers
并在 extra 下设置 installer-paths 属性。Drupal 的多站点设置就是一个很好的例子,其中的资源包应该被安装到各自网站的子目录。下面我们使用composer/installers
来覆盖安装路径:
{
"extra": {
"installer-paths": {
"sites/example.com/modules/{$name}": ["vendor/package"]
}
}
}
现在该拓展包将被安装到你指定的目录,而不是composer/installers
默认指定目录。
注意:你不能使用这种方式来修改任意包的安装目录。这种方式只适用于依赖
composer/installers
并使用自定义 type 控制的拓展包。