Composer индивидуальный частный пакет не найден - PullRequest
0 голосов
/ 05 августа 2020

У меня есть репозиторий пакетов private-i sh, который я пытаюсь выпустить внутри компании, в которой я работаю, как пакет composer.

Я создал пакет со следующим composer.json file:

{
    "name": "my_team/package_name",
    "description": "Package Description",
    "homepage": "https://git.company.com/MyTeam/package_name",
    "type": "library",
    "license": "Proprietary",
    "minimum-stability": "stable",
    "version": "1.4",
    "require": {
        "php": ">=7.1.0",
        "ext-curl": "*",
        "ext-json": "*"
    },
    "autoload": {
        "psr-4": {
            "PackageNamespace\\": "src/"
        }
    }
}

Все пути в пакете верны, и я создал тег и выпуск в репозитории Enterprise Github, содержащий zip-файл пакета версии 1.4.

Я хотел проверить, работает ли пакет, поэтому я создал тестовый сценарий для его запуска, и в нем есть следующий файл composer.json:

{
    "name": "benjam/test",
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "my_team/package_name",
                "version": "1.4",
                "dist": {
                    "type": "zip",
                    "url": "https://git.company.com/MyTeam/package_name/archive/v1.4.zip"
                }
            }
        }
    ],
    "require": {
        "my_team/package_name": "1.4"
    }
}

и файл main.php с следующее содержимое:

<?php

require __DIR__ . '/vendor/autoload.php';

$obj = new PackageNamespace\ClassName();

Когда я пытаюсь запустить этот файл, я получаю следующую ошибку:

PHP Fatal error:  Uncaught Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php:5
Stack trace:
#0 {main}
  thrown in C:\Development\test\main.php on line 5

Fatal error: Uncaught Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php on line 5

Error: Class 'PackageNamespace\ClassName' not found in C:\Development\test\main.php on line 5

Call Stack:
    0.2130     353200   1. {main}() C:\Development\test\main.php:0

Кажется, что автозагрузчик composer не видит установленный пакет.

Что я сделал не так?

Другой тестовый сценарий composer.json настройки, которые я пробовал:

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "my_team/package_name",
                "version": "1.4",
                "source": {
                    "type": "git",
                    "url": "https://git.company.com/MyTeam/package_name",
                    "reference": "origin/master"
                }
            }
        }
    ],

1 Ответ

0 голосов
/ 05 августа 2020
• 1000

Поскольку composer использует информацию из этого файла для создания настроек автозагрузки, он успешно импортировал и установил пакет, но не устанавливал настройки автозагрузки.

Я изменил свой тестовый скрипт composer.json на следующий, и он работает:

(Обратите внимание, что в репо есть тег под названием v1.4)

{
    "name": "benjam/test",
    "repositories": [
        {
            "type": "vcs",
            "url": "git@git.company.MyTeam/package_name.git"
        }
    ],
    "require": {
        "my_team/package_name": "v1.4"
    }
}
...