2016-02-26 124 views
2

我開發了一個自定義的laravel軟件包並將其放在GitHub上。我把它放在composer.json(下面的代碼)中,它安裝正常。Force Composer更新軟件包

我還沒有版本信息,因爲它仍在開發中。當我修改我的包(在一個單獨的目錄中)時,我承諾並將更改推送到GitHub倉庫。

當我運行'composer update'時,我得到「沒有安裝或更新」。如果我從我的供應商目錄中刪除軟件包並進行更新,那麼我的軟件包將從GitHub倉庫安裝,並附帶最新的更改。

但是我希望能夠從回購站中強制執行最新的更改,而不必先從我的供應商目錄中刪除它,因爲我對該軟件包有其他依賴關係,如果刪除它,我會從工匠明確編譯的類沒有被定義(因爲它們在我刪除廠商包中定義...)

我的頂級composer.json的有關部分:

"repositories": [{ 
    "type": "package", 
    "package": { 
     "name": "myrepo/MyExtension", 
     "version": "dev-master", 
     "source": { 
     "url": "https://github.com/myrepo/MyExtension.git", 
     "type": "git", 
     "reference": "master" 
     }, 
     "autoload": { 
     "psr-4": { 
      "MyExtension\\": "src/Extensions/" 
     } 
     } 
    } 
    ], 
    "require": { 
    "php": ">=5.5.9", 
    "laravel/framework": "5.2.*", 
    "myrepo/MyExtension": "dev-master" 
    }, 

回答

2

您已經自己創建了有關軟件包的所有元數據,可能會使Composer認爲數據沒有更改。

的容易,而且很可能工作,方式是簡單地指向存儲庫URL,讓作曲家查詢從包含在庫中的文件composer.json元數據:

"repositories": [{ 
    "type": "vcs", 
    "url": "https://github.com/myrepo/MyExtension.git" 
]} 
+1

,完美的工作,謝謝!我把太多的信息放到了我的主composer.json文件中。把它全部移到了package composer.json,並且只是你上面建議的基本倉庫信息(雖然把「type」改成了「git」)。 – ChrisNY

0

對於它來更新您需要對版本進行更改,但正如您之前所說的,您並未對版本進行版本控制,以便它可以更新您的更改請轉至composer.lock以刪除您的軟件包條目或使用composer刪除軟件包並重新安裝。例如

// composer remove vendor/package && composer require vendor/package 
composer remove zizaco/entrust && composer require zizaco/entrust