Пакеты Composer, дублирующие каталоги при установке

У меня есть локальная зависимость, которая размещается на частном репозитории Gitlab. Однако, я испытываю затруднения, вставляя это в свой проект через Composer.

мой composer.json:

"require": {
"crmpicco/GolfBundle": "dev-master"},
"repositories": [
{
"type": "package",
"package": {
"name": "crmpicco/GolfBundle",
"version": "dev-master",
"source": {
"url": "https://git.crmpicco.com/rfc1872/golfbundle.git",
"type": "git",
"reference": "master"},
"autoload": {
"psr-4": {
"crmpicco\\GolfBundle\\": ""}
}
}
}
],

Когда я смотрю в каталог поставщиков, каталоги складываются вдвое, когда я этого не ожидаю, например,
/vendor/crmpicco/GolfBundle/crmpicco/GolfBundle

Когда я бегу composer update crmpicco\GolfBundle Я получаю следующую ошибку, когда Symfony пытается сделать кеш: clear:

Сценарий Sensio \ Bundle \ DistributionBundle \ Composer \ ScriptHandler :: clearCache, обрабатывающий событие post-update-cmd, прерванное с исключением

[RuntimeException] Произошла ошибка при выполнении команды «cache: clear —no-warmup»:

PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted
to load class "crmpiccoGolfBundle from namespace "crmpicco\GolfBundle".
Did you forget a "use" statement for "crmpicco\GolfBundle\crmpiccoGolfBundle"?
in /var/www/crmpicco/symfony/app/AppKernel.php:31

Что я пропускаю / делаю неправильно в моем composer.json настроить?

Bundle dir структура:

/crmpicco
/GolfBundle
/Component
/DependencyInjection
crmpiccoGolfBundle.php

Bundle composer.json:

{
"name": "crmpicco/GolfBundle",
"type": "library",
"description": "A Symfony 2 bundle which provides an easy way to handle billing and subscriptions.",
"license": "MIT",
"require": {
"php": ">=7.0",
"symfony/config": "~2.8.34",
"symfony/dependency-injection": "~2.8.34",
"symfony/http-kernel": "~2.8.34",
},
"autoload": {
"psr-4": {
"crmpicco\\GolfBundle\\": ""}
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "relative"}
}

1

Решение

Вы не должны использовать package тип для репозиториев, который содержит действительный composer.json, Этот тип был разработан для пакетов без composer.json, поэтому этот файл будет полностью игнорироваться, так же как и обновления в вашем пакете.

В вашем случае это лучше определить как git:

"repositories": [
{
"type": "git",
"url": "https://git.crmpicco.com/rfc1872/golfbundle.git"}
],
1

Другие решения

Хорошо. Как я вижу у тебя неправильно psr-4 Конфигурация автозагрузки в вашем комплекте composer.json
Вы должны изменить это на следующее:

"autoload": {
"psr-4": {
"crmpicco\\GolfBundle\\": "crmpicco/GolfBundle"}
}

Также, если вы не хотите дублировать каталоги, переместите содержимое вашего пакета в корневой каталог, а затем не меняйте composer.json содержание. Dirs дублируют, потому что Composer создает структуру dir на основе name свойство, которое также crmpicco/GolfBundle в твоем случае.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector