Мне удалось установить репозитории, у которых нет файла composer.json следующим образом:
{
"type": "package",
"package": {
"name": "yahoo/yui-compressor",
"version": "2.0.4",
"dist": {
"url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip",
"type": "zip"
}
}
},
Я взял "тип": "zip" часть из документов, но я не мог найти много других типов. Например, мне нужно установить jQuery, но я не знаю, что вводить в тип ( "js" не работает).
{
"type": "package",
"package": {
"name": "jquery/jquery",
"version": "1.7.2",
"dist": {
"url": "http://code.jquery.com/jquery-1.7.2.js",
"type": "js"
}
}
}
Любые идеи?
EDIT: я добавляю полное решение, чтобы помочь @CMCDragonkai:
"require": {
"vendorname/somefile": "1.2.3",
},
"repositories": [
{
"type": "package",
"package": {
"name": "vendorname/somefile",
"version": "1.2.3",
"dist": {
"url": "http://example.com/somefile.txt",
"type": "file"
}
}
}
]
Это просто недостающая функция. Вероятно, должен быть новый тип dist, который представляет собой только один файл открытого текста, который нужно загрузить и оставить как есть. Пожалуйста, напишите запрос функции на трекер github: https://github.com/composer/composer/issues/
EDIT:
Функция фактически существует, но не была документирована.
"type": "file"
На самом деле есть простой способ установить jQuery, просто введите:
{
"require": {
"components/jquery": "1.9.*"
}
}
Он использует Component Installer for Composer и по умолчанию все активы из Component установлены под components
, но его можно настроить. (см. документы).
components/jquery
- это Shim-репозиторий для jQuery, и то же репо работает с Bower, Component и Composer
Как уже говорилось, первая часть решения определяет ваши собственные репозитории и параметр определения "type: ": "file"
репозитория. Но следующая проблема заключается в том, что композитор должен поставить JQuery там, где вы хотите. В сущности, композитор, похоже, ограничен загрузкой источника зависимости в vendor-dir
(что раздражает, но, вероятно, связано с требованиями к автозагрузке). Общее исправление этого ограничения - написать плагин композитора, который его преодолеет. Кажется, это несколько плагинов, которые могут управлять этим. Самое простое облегченное решение, которое я нашел, это PHP Composer Asset Manager, который предназначен для управления неинтерфейсами PHP/Composer. Хотя, у него есть хотя бы одно ограничение в том, что изменения, которые делает плагин, не управляются/не распознаются композитором. Все еще можно использовать.
Здесь полный composer.json
для установки JQuery с помощью этого плагина:
{
"name": "foo/bar",
"require":
{
"phpclasses/assets": "*",
"jquery/jquery": "*"
},
"repositories": [
{
"type": "composer",
"url": "http://www.phpclasses.org/"
},
{
"type": "package",
"package": {
"name": "jquery/jquery",
"version": "1.7.2",
"type": "jquery",
"dist": {
"url": "http://code.jquery.com/jquery-1.7.2.js",
"type": "file"
}
}
}
],
"extra": {
"assets": {
"actions": [
{
"type": "copy",
"target": "webroot/js",
"pattern": "\\.js$"
}
],
"packages": {
"jquery/jquery": "*"
}
}
}
}