2016-11-11 3 views
2

Почему следующий корень composer.json результат в vendor/composer/autoload_classmap.php, содержащий все отображения класса для классов Smarty в - хотя composer.json из typo3-ter/smarty не приходят с какой-либо autoload конфигурации?композитора автозагрузок классы расширения TYPO3 без каких-либо конфигураций автозагрузки

{ 
    "repositories": [ 
    { 
     "type": "composer", 
     "url": "https://composer.typo3.org" 
    } 
    ], 
    "require": { 
     "typo3/cms": "^6.2", 
     "typo3-ter/smarty": "2.1.2" 
    } 
} 

ответ

6

Некоторая справочная информация:

https://composer.typo3.org является хранилищем композитора, который позволяет завещательного отказу движимости TYPO3 Extension Repository (TER) расширений, чтобы быть устанавливаемыми с помощью композитора. Поскольку расширения TER не имеют имени поставщика, все из них имеют один и тот же поставщик, который является «typo3-ter».

Этот (старый) репозиторий композитора построен с использованием метаинформации (зависимости от других расширений TER и версий TYPO3, автора, описания ...) от TER.

Чтобы сделать этот репозиторий более полезным для конечных пользователей, и особенно потому, что TYPO3> 7.6 полностью полагается на автозагрузчик композитора при установке через композитор, то добавляется complete extension directory в карту классов композитора. Без этого классы расширения не будут загружаться вообще, без какой-либо дополнительной настройки.

Поскольку это может вызвать проблемы, я научил TER частично захватывать информацию от composer.json в случае, если этот файл присутствует. Это означает, что, если composer.json присутствует иit contains an autoload section, этот раздел используется для генерации информации для автозагрузки этого расширения на composer.typo3.org

Что касается Smarty расширения:

Неожиданно этого расширения уже есть файл composer.json. Но он сломан. В первую очередь: он пропускает информацию автозагрузки, хотя он явно имеет классы. Из-за отсутствия информации об автозагрузке генератор пакета composer.typo3.org добавляет полный каталог как classmap.

Если это вызывает проблемы (вы так и не упомянули об этом, но я так полагаю), вы должны добавить repo непосредственно в качестве типа «vcs» в ваш composer.json и потребовать «rtp/smarty» вместо «typo3-ter/умник».

Или попросить автора исправить composer.json и загрузить новую версию TER, или даже лучше зарегистрировать этот пакет непосредственно на packagist.org

+0

Thx. Правильно ли я это понимаю? Генератор пакетов TYPO3 CMS Composer генерирует 'packages.json' и что-то вроде' all $ 0877d76abecf1f9f1412fa11915899533a4475b3.json', которые загружаются (на самом деле это 36 мб) Composer on 'composer update'. Эти файлы содержат конфигурацию автозагрузки, которая используется для сборки автозагрузчика Composer для моего проекта. Раздел 'autoload' в расширении' comper.json' расширения TYPO3 вообще не будет учитываться в 'composer update' - это информация во всех $ 0877d76abecf1f9f1412fa11915899533a4475b3.json', которая используется. Правильно? –

+0

Да, создается пакет package.json, и композитор должен загрузить полный файл. Существует обновление, ожидающее оптимизации этого https://github.com/TYPO3/CmsComposerPackageGenerator/pull/19, однако этого в настоящее время не может быть сделано из-за низкой версии PHP на сервере. – helhum

+0

Да, этот файл содержит всю информацию, необходимую для композитора, включая информацию об автозагрузке. Для пакетов «typo3-ter» ничего не оценивается. Однако, поскольку уже довольно давно часть автозагрузки композитора.json in extension ** ** вычисляется при построении этой информации. Таким образом, эта часть composer.json ** не ** проигнорирована – helhum

 Смежные вопросы

  • Нет связанных вопросов^_^