编程语言
首页 > 编程语言> > php-Composer require-dev从软件包的自动加载未添加到项目的自动加载中

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