鍍金池/ 教程/ PHP/ 如何為我的框架自定義一個資源包安裝目錄?
簡介 中文文檔
腳本
命令行
資源庫
庫(資源包)
Composer PHP依賴管理的新時代
插件
別名
自定義安裝程序
二進(jìn)制供應(yīng)庫和 <code>vendor/bin</code> 目錄
如何為我的框架自定義一個資源包安裝目錄?
composer.json 架構(gòu)
我應(yīng)該提交 vendor 目錄中的依賴包嗎?
為什么 Composer 不遞歸加載儲存庫?
基本用法
為什么說“比較符”和“通配符”相結(jié)合的版本約束是壞主意?

如何為我的框架自定義一個資源包安裝目錄?

每個框架都可能有一個或多個不同的依賴包安裝目錄。Composer 可以通過使用 composer/installers 來配置,安裝依賴到其它的目錄,而不是默認(rèn)的 vendor 目錄。

如果你是一個 包作者 并且希望自己的資源包被安裝到自定義的目錄中,簡單的 require composer/installers 依賴,并設(shè)置適當(dāng)?shù)?type 屬性。這是常見的方式,如果你的資源包專門用于一個框架,如 CakePHP、Drupal 或 WordPress。這是一個 WordPress 主題的 composer.json 文件的例子:

{
    "name": "you/themename",
    "type": "wordpress-theme",
    "require": {
        "composer/installers": "~1.0"
    }
}

現(xiàn)在當(dāng)你用 Composer 安裝這個主題時,它就會被放置在 wp-content/themes/themename/ 目錄。目前已被支持的 type 類型請查看 current supported types。

對于一個 包使用者 你可以為一個包設(shè)置或覆蓋安裝路徑,requires composer/installers 并在 extra 下設(shè)置 installer-paths 屬性。Drupal 的多站點設(shè)置就是一個很好的例子,其中的資源包應(yīng)該被安裝到各自網(wǎng)站的子目錄。在這里我們使用 composer/installers 來覆蓋安裝路徑:

{
    "extra": {
        "installer-paths": {
            "sites/example.com/modules/{$name}": ["vendor/package"]
        }
    }
}

現(xiàn)在該資源包將被安裝到你指定的目錄,并替換 $name 變量,而不是默認(rèn)目錄。

注意: 你不能通過它改變所有包的安裝目錄。這僅適用于引入 composer/installers 依賴,自定義了 type 屬性的資源包。