Composer - приватный пакет не попадает в автозагрузчик - PullRequest
1 голос
/ 02 октября 2019

Я создал пользовательский пакет, и он находится в нашем репозитории GitLab, вот для него composer.json:

{
    "name": "TeamScanblox/InternalAPI_Ref",
    "description": "",
    "keywords": [
        "swagger",
        "php",
        "sdk",
        "api"
    ],
    "homepage": "http://swagger.io",
    "license": "proprietary",
    "authors": [
        {
            "name": "Swagger and contributors",
            "homepage": "https://github.com/swagger-api/swagger-codegen"
        }
    ],
    "require": {
        "php": ">=5.5",
        "ext-curl": "*",
        "ext-json": "*",
        "ext-mbstring": "*",
        "guzzlehttp/guzzle": "^6.2"
    },
    "require-dev": {
        "phpunit/phpunit": "^4.8",
        "squizlabs/php_codesniffer": "~2.6",
        "friendsofphp/php-cs-fixer": "~2.12"
    },
    "autoload": {
        "psr-4": { "InternalAPI\\Ref\\" : "lib/" }
    },
    "autoload-dev": {
        "psr-4": { "InternalAPI\\Ref\\" : "test/" }
    }
}

Это структура верхнего уровня для него:

Ref Package

Я включил его как «TeamScanblox / InternalAPI_Ref»: «*» в composer .json верхнего проекта, в котором я нуждаюсь, и проблема в том, что онне обрабатывается автоматически и не включается через PSR-4 в этот проект. Единственный способ включить его и работать - это добавить «InternalAPI \ Ref \»: «vendor / TeamScanblox / InternalAPI_Ref / lib /» в «psr-4» в проекте. Почему это? Что я сделал неправильно / не правильно сделал, чтобы он был автоматически загружен?

Я включил его в проект 'composer.json следующим образом:

{
  "type": "package",
  "package": {
    "name": "TeamScanblox/InternalAPI_Ref",
    "version": "1.0.0",
    "type": "package",
    "source": {
      "url": "git@gitlab.com:TeamScanblox/InternalAPI_Ref.git",
      "type": "git",
      "reference": "master"
    }
  }
}

1 Ответ

0 голосов
/ 14 октября 2019

Если вы включаете вашу библиотеку в приложение, используя тип package, то все, что Composer знает об этой библиотеке, должно быть упомянуто в этом описании package, включая автозагрузку и любые другие требования.

Обычно это package следует использовать только в том случае, если вы не можете изменить источник, откуда поступает код. К счастью, у вас есть полный контроль над хранилищем вашей библиотеки, вы должны просто указать Composer на него.

"repositories": [{
    "type": "vcs",
    "url": "ssh://git@somewhere/path/repo.git"
}]

Используйте этот пример вместо "type": "package", и Composer свяжется с хранилищем и прочитает его composer.json, определите все зависимости и автозагрузку и установите его, как любой внешний пакет.

Обратите внимание, что вы должны добавить каждый используемый вами внутренний репозиторий. Composer не следует указателям repository библиотеки, все они должны быть продублированы в корневом каталоге composer.json вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...