【发布时间】:2018-01-18 14:02:55
【问题描述】:
我很困惑为什么我不能更改作曲家包的命名空间。我正在我的供应商目录中运行一个带有包的 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 文件的原因是由于 installed.json 文件。该文件包含实际安装的内容和指定的命名空间。如果我更改此文件中包的命名空间并运行自动加载器,则更新的命名空间将生效。通过作曲家文档无法找到有关此文件的太多信息 - 我不确定它何时会被覆盖?
【问题讨论】:
-
请注意,
Spatie命名空间已在使用中并已注册,请参阅packagist.org/packages/spatie。如果你依赖这些包中的任何一个,或者打算发布你的包,你可能会遇到问题。 -
嗨@localheinz,我只是使用 Spatie 包来跟踪问题。我已经运行了自动加载器,它没有任何区别。谢谢
-
运行自动加载器是什么意思?
标签: namespaces composer-php vendor