2017-08-10 88 views
-1

我很困惑,爲什麼我無法更改作曲家包的名稱空間。我正在使用我的供應商目錄中的包運行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文件。該文件包含實際安裝的內容和指定的命名空間。如果我在該文件中更改包的名稱空間並運行自動加載器,則更新的名稱空間將生效。通過作曲家文檔無法找到關於此文件的許多信息 - 我不確定何時寫完文檔?

+0

注意'Spatie'命名空間已經在使用和註冊,請參閱https://packagist.org/packages/spatie/。如果您依賴任何這些軟件包,或者打算髮布您的軟件包,則可能會遇到問題。 – localheinz

+0

嗨@localheinz,我只是使用Spatie包來追蹤問題。我已經運行了自動加載器,並沒有什麼區別。謝謝 – user3455246

+0

*您運行自動裝載機*是什麼意思? – localheinz

回答

0

composer.json調整自動加載配置之後,你需要運行

$ composer dump-autoload 

僅供參考,請參閱:

+0

你甚至嘗試過我在這裏建議的嗎?這應該是公認的解決方案,因爲它正是你需要做的。 – localheinz

+0

我已經運行了composer dump-autoload,但是這本身並不起作用。只有在作曲家文件夾中先刪除installed.json時纔會發生更改。 – user3455246

相關問題