为什么我不能更改作曲家包名称?



我很困惑为什么我不能更改作曲家包的命名空间。我正在运行一个 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文件并从其中的"自动加载"部分自动加载,但我现在想知道情况是否如此。

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

更新

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

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

$ composer dump-autoload

有关参考,请参阅:

  • https://getcomposer.org/doc/03-cli.md#dump-autoload

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

  1. 分叉包
  2. 只进行您绝对需要的更改
  3. 将分叉的位置添加到目标项目中 Composer.json 的存储库部分(而不是分叉包的 composer 文件(。
  4. 作曲家现在应该将包的更改版本提取到项目的供应商目录中。
  5. 考虑发出拉取请求

相关内容

  • 没有找到相关文章

最新更新