Автозагрузка 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 полезны только тогда, когда вы хотите разработать пакет. Как только вам требуется пакет в другом проекте, вы больше не хотите разрабатывать пакет, а другой проект.