Composer require-dev自动加载来自未添加到项目自动加载的包

时间:2014-11-15 00:25:08

标签: php composer-php satis

我在composer.json文件中创建了一个包含以下设置的composer包:

"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。该软件包安装在&#34; vendor / myvendor / mypackage文件夹&#34;我知道安装DEV版本是因为&#34;测试&#34;文件夹在那里(在稳定版本中排除测试文件夹(存档排除))。

但是,&#34; autoload_psr4.php&#34;中缺少以下行。文件

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

这是我使用的composer install命令:

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

基本上,我想知道为什么我的包的dev命名空间没有添加到自动加载器中。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:3)

autoload-devrequire-dev都只适用于root用户(btw,dev是默认值)。 dev版本仅在您要开发包时才有用。只要您在另一个项目中需要包,就不再需要开发包,而是另一个项目。