Как я могу переопределить вендор-дир для одного пакета в composer.json

Я связываю веб-приложение через composer. В моем разделе конфигурации определен каталог поставщика, необходимый для фреймворка (TYPO3 Flow):

"config": {
    "vendor-dir": "Packages/Libraries",
    "bin-dir": "bin"
},

Теперь у меня есть один пользовательский пакет, который поставляется не с Packagist, а с Github. Этот пакет необходимо зарегистрировать в Packages/Application/Vendor.PackageName. Итак, я попытался использовать target-dir:

"repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "vendor/package",
        "source": {
            "url": "https://github.com/mycompany/mypackagerepo.git",
            "type": "git",
            "reference": "master"
        },
        "target-dir": "Packages/Application/Vendor.Package",
    }
}],
"require": {
    "typo3/flow": "2.0.*",
    "vendor/package": "dev-master"
}

Клонирование с Github работает нормально, но теперь пакет проверен на

Packages/Libraries/vendor/package/Packages/Application/Vendor.Package

Это означает, что vendor-dir и target-dir были объединены.

Как можно полностью переопределить вендор-дир для одного пакета? Спасибо за любую помощь.


person lorenz    schedule 22.10.2013    source источник


Ответы (1)


Вместо target-dir вам нужно использовать Установщики Composer и изменить тип пакета на typo3-flow-package, поэтому ваше определение пакета может быть:

"repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "vendor/package",
        "type": "typo3-flow-package",  
        "source": {
            "url": "https://github.com/mycompany/mypackagerepo.git",
            "type": "git",
            "reference": "master"
        },
        "require": {
            "composer/installers": "~1.0"
        }
    }
]}

По умолчанию ваш пакет будет установлен под Packages/Application/package, но если вы хотите добавить префикс к папке пакета с именем поставщика и получить его под Packages/Application/vendor.package, просто добавьте:

"extra": {
    "installer-paths": {
        "Packages/Application/{$vendor}.{$name}/": ["type:typo3-flow-package"]
    }
}
person César    schedule 25.10.2013