当前位置: 首页 > 文档资料 > Composer 中文文档 >

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 控制的拓展包。