为什么我不能更改composer包命名空间?

问题描述 投票:-1回答:2

我很困惑为什么我不能改变作曲家包的名称空间。我正在我的供应商目录中运行带有包的laravel应用程序。

所以,我的composer.json这个套餐包括:

{
    "autoload": {
        "psr-4": {
            "Spatie\\Backup\\": "src"
        }
    }
}

我想改变名称空间,例如:

{
    "autoload": {
        "psr-4": {
            "Spatie\\Backupdatabase\\": "src"
        }
    }
}

当我运行自动加载器时,文件vendor/composer/autoload_psr4.php仍然包含原始命名空间而不是更新的命名空间。我试过跑步

$ composer clear cache

但这并没有什么不同。

我认为作曲家通过运行供应商目录中的包来自动加载,寻找composer.json文件并从内部的'autoload'部分自动加载,但我现在想知道是否是这种情况。

我错过了什么?为什么不用新的命名空间自动加载?

更新

我认为编辑包composer.json中的命名空间不会更新psr4文件的原因是由于installed.json文件。此文件包含实际安装的内容和指定的命名空间。如果我在此文件中更改包的命名空间并运行自动加载器,则更新的命名空间将生效。通过作曲家文档无法找到关于此文件的更多信息 - 我不确定它何时被覆盖?

namespaces composer-php vendor
2个回答
0
投票

composer.json中调整自动加载配置后,您需要运行

$ composer dump-autoload

供参考,请参阅:


0
投票

即使您已经分叉了包,也不建议更改命名空间。相反,请考虑这样的事情......

  1. 叉包
  2. 只做你绝对需要的改变
  3. 将fork的位置添加到目标项目中composer.json的存储库部分(而不是forked包的composer文件)。
  4. Composer现在应该将包的更改版本提取到项目的供应商目录中。
  5. 考虑提出拉动请求
© www.soinside.com 2019 - 2024. All rights reserved.