我在 composer.json 文件中制作了一个具有以下设置的作曲家包:
"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 install 命令:
composer install --dev -d /var/www/myproject
基本上,我想知道为什么我的包的 dev 命名空间没有添加到自动加载器中。有人可以解释吗?