作曲器不为库生成自动加载



我已经设置了两个项目,一个'init'和一个库,这是init所需的。它们都设置了PSR-0自动加载,但是库中的自动加载值不会添加到init项目中的vendor/composer/autoload_namespaces.php中。

样本作曲家。

{
    "name": "lxp/library",
    "description": "A test library",
    "autoload": {
        "psr-0": {
            "LXP\Library": "src/"
        }
    }        
}

样本作曲家。从需要该库的项目中获取Json:

{
    "name": "lxp/init",
    "name": "A test init",
    "autoload": {
        "psr-0": {
            "LXP\Init": "src/"
        }
    },
    "repositories": [
        {
            "type": "composer",
            "url": "http://satis.repo.redacted/"
        }
    ],
    "require": {
        "lxp/library": "dev-master"
    }
}

库包含类LXP library Something在文件src/LXP/library/Something.php。

需要该库的项目在src/LXP/Init/Now.php文件中包含LXPInitNow类。

当在'init'项目中运行composer install时,它会下载库项目并将其正确地放入vendor,但是vendor/composer/autoload_namespaces.php中不包含库的自动加载信息,只有当前项目的信息。

我做错了什么?如果我在库项目中运行dump- autolload,那么autoload_namespaces.php文件是正确的,并且一个快速引导脚本确认它确实拾取了类。

EDIT -这是satiss -generated packages.json的一个问题。为了解决这个问题,我必须从库的编写器中添加自动加载信息。json到json文件我提供给satiss,这似乎是一个不必要的重复,所以我可能做错了。是否有一个地方可以存储满足库的自动加载信息?例如,能满意地读懂作曲家。存在于它扫描的库中的Json文件?

编辑#2 -萨蒂斯不读作曲家。指定为"包"类型的存储库中的json文件。这是显而易见的后见之明,因为"包"用于没有编写器的库。

改变满意度。Json的存储库为"vcs"类型意味着编写器。读取Json,并解析信息(包括自动加载规范)并将其存储在packages.json中。

@Seldaek -谢谢你的建议,我的满意配置是问题,我希望这澄清了满意/作曲家行为的其他人在我的位置

我认为你可能犯了两个可能导致这种情况的错误:

  • 你忘了更新你的满足库,所以lxp/init的自动加载配置不是最新的
  • 您正在从锁定文件中运行composer install,这意味着composer只是从composer读取信息。锁定文件,不将包元数据更新到satiss中可用的最新版本。要解决这个问题,你应该运行composer update

尝试composer dump-autoload命令。

这取决于你如何通过Composer安装你的库。例如,当下载它作为package类型(我相信与composer类型相同)时,Composer从不读取composer.json文件,所以你应该使用vcsgit类型。看到:gh - 6846 .

这是composer.json应该工作:

{
  "require": {
    "lxp/library": "dev-master"
  },
  "repositories": [
    {
      "type": "vcs",
      "url": "http://satis.repo.redacted/"
    }
  ]
}

然后执行:composer install .

对于故障排除,尝试运行:

  • composer dump-autoload -o -vvv .
  • composer diagnose -vvv

相关内容

  • 没有找到相关文章

最新更新