自动加载psr-4在安装过程中丢失



这是作曲器。Json of my bundle(缩短)

{
    "name": "acme/my-bundle",
    "type": "library",
    "version": "0.5.0",
    "autoload": {
        "psr-4": {
            "Acme\MyBundle\": ""
        }
    }
}

和在我的项目中:

"require": {
    "acme/my-bundle": "dev-master"
},

,然后我运行composer install导致安装。json像

[
    {
        "name": "acme/my-bundle",
        "version": "dev-master",
        "version_normalized": "9999999-dev",
        "type": "library",
        "installation-source": "source"
        //
        // here must be this:
        // "autoload": {
        //    "psr-4": {
        //        "Acme\MyBundle\": ""
        //    }
        // },
        // but these lines are missing!
        //
    }
]

和自动加载-psr4.php:

<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
    /* here must be this:
     * 'Acme\MyBundle\' => array($vendorDir . '/acme/my-bundle'),
     * but this line is missing!
     */
);

自动加载消失了,还有其他键,如require

我错过了什么?

我也尝试了psr-0,但没有成功。Autoload_namespaces.php只是一个空数组

我没有提到,我想从私有仓库获取一个包!这将使情况有所不同!

所以我必须重新指定自动加载
"require": {
    "acme/my-bundle": "dev-master"
},
"repositories": [
    {
        "type": "package",
        "package": {
            "version": "dev-master",
            "name": "acme/my-bundle",
            "source": {
                "url": "ssh://git@example.com/acme/my-bundle",
                "type": "git",
                "reference": "test"
            }, 
            //    THIS IS      |
            //    ADDITIONAL   V
            "autoload": {
                "psr-4": {
                    "Acme\MyBundle\": ""
                }
            }
        }
    }
]

见https://stackoverflow.com/a/24193122/816362由于@zacharydanger

最新更新