php-Composer require-dev从软件包的自动加载未添加到项目的自动加载中
作者:互联网
我在composer.json文件中制作了具有以下设置的composer软件包:
"autoload": {
"psr-4": {
"MyVendor\\MyPackage\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Test\\Unit\\MyProject\\MyPackage\\": "test/unit"
}
},
如果我运行composer install并强制执行dev参数,则会得到以下“ 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参数.该软件包安装在“ vendor / myvendor / mypackage文件夹”中,并且我知道已安装DEV版本,因为其中存在“ test”文件夹(在稳定发行版中,排除了测试文件夹(存档排除)).
但是,“ autoload_psr4.php”文件中缺少以下行
'Test\\Unit\\MyVendor\\MyPackage\\' => array($baseDir . '/test/unit'),
这是我使用的composer安装命令:
composer install --dev -d /var/www/myproject
基本上,我想知道为什么我的软件包的dev名称空间没有添加到自动加载器中.有人可以解释吗?
解决方法:
autoload-dev和require-dev都仅适用于根目录(顺便说一句,dev是默认设置).开发版本仅在您要开发软件包时有用.一旦您在另一个项目中需要该软件包,就不再想要开发该软件包,而是在另一个项目中.
标签:composer-php,satis,php 来源: https://codeday.me/bug/20191121/2048773.html