Я смог установить репозитории, у которых нет файла 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/
РЕДАКТИРОВАТЬ :
Функция фактически существует, но не была документирована.
"type": "file"
На самом деле есть простой способ установить jQuery, просто введите:
{ "require": { "components/jquery": "1.9.*" } }
Он использует Component Installer for Composer, и по умолчанию все компоненты компонента Component устанавливаются под components
, но его можно настроить. ( см. документы ).
Как уже указывалось, первая часть решения определяет ваши собственные репозитории и параметр определения "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": "*" } } } }