Автозагрузка Composer require-dev из пакета не добавлена ​​в автозагрузку проекта

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

"autoload": {
    "psr-4": {
        "MyVendor\\MyPackage\\": "src/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Test\\Unit\\MyProject\\MyPackage\\": "test/unit"
    }
},

Если я запускаю composer install, применяя dev param, и получаю следующий файл "autoload_psr4.php":

<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Test\\Unit\\MyVendor\\MyPackage\\' => array($baseDir . '/test/unit'),
    'MyVendor\\MyPackage\\' => array($baseDir . '/src'),
);

Так что в основном все работает хорошо здесь. Затем я добавляю пакет на сервер Satis.

В файле composer.json моего проекта я добавляю следующую строку:

"require": {
    "myvendor/mypackage": "1.0.*@dev",
    "symfony/http-foundation": "2.5.*",
    "symfony/http-kernel": "2.5.*"
}

Еще раз, я запускаю composer install, применяя dev param, в моем проекте. Пакет устанавливается в "vendor/myvendor/mypackage folder", и я знаю, что версия DEV установлена, потому что есть папка "test" (тестовая папка исключена (исключение архива) в стабильных выпусках).

Но следующая строка отсутствует в файле "autoload_psr4.php"

'Test\\Unit\\MyVendor\\MyPackage\\' => array($baseDir . '/test/unit'),

Вот команда установки composer, которую я использовал:

composer install --dev -d /var/www/myproject

По сути, мне интересно, почему пространство имен dev моего пакета не добавляется в автозагрузчик. Может кто-нибудь объяснить?

1 ответ

autoload-dev а также require-dev оба работают только для рута (кстати, по умолчанию dev). Версии dev полезны только тогда, когда вы хотите разработать пакет. Как только вам требуется пакет в другом проекте, вы больше не хотите разрабатывать пакет, а другой проект.

Другие вопросы по тегам