2017-12-03 204 views
0

我想知道是否有方法使用composer update沒有查詢packagist.org所有的軟件包。如何在沒有任何生成的HTTP調用的情況下運行Composer更新?

我的問題是因爲我更新本地composer.json我要運行composer update,因爲我得到這樣的消息時,只需運行composer install

警告:鎖定文件是不是最新的,在最新的變化composer.json。您可能會獲得過時的依賴關係。運行更新以更新它們。

所以我想要的只是更新依賴關係,然後從緩存中抓取任何需要的。我相信http調用來檢查更新的版本會導致巨大的減速。

+0

有沒有很好的理由*編輯*'composer.json'以添加,刪除或更新程序包。所有這些都可以通過運行'composer require'或'composer remove'來實現,請參閱https://getcomposer.org/doc/03-cli.md#require和https://getcomposer.org/doc/03-cli .MD#刪除。 – localheinz

+0

@localheinz composer.json中還有其他設置,例如本地存儲庫和自動載入設置。 – Sarke

+0

當然,但如果您閱讀我上面的評論,我正在討論更新,添加和刪除軟件包的情況。 – localheinz

回答

0

運行

$ composer update 

的一點是更新所有通過composer.json所需的依賴。爲了找出是否有任何依賴需要更新,composer連接到https://packagist.org(中央軟件包元數據存儲庫),以查詢當前需要的任何軟件包是否在與相應版本約束匹配的更新版本中可用。

您可以禁用通過配置使用Packagist:

{ 
    "repositories": [ 
     { 
      "packagist.org": false 
     } 
    ] 
} 

另外,也可以使用私有Packagist或賽帝,以加快這一進程。

一般來說,我會鼓勵使用

$ composer install 

安裝依賴關係鎖定在composer.lock,或運行

$ composer require foo/bar:^x.y.z —update-with-dependencies 

或運行

$ composer remove foo/bar 

添加,更新和刪除包,而不是編輯composer.json,然後運行

$ composer update 

更新所有軟件包一次有以下缺點

  • 它並沒有明確記錄所需的包的實際最低版本應該是什麼樣
  • 它可以打破的變化可能拉,並根據您是否有足夠的測試覆蓋率,您可能很難找出造成問題的原因

限制一次更新一個更容易找到問題。此外,沒有必要一次更新每個依賴項(除非您想知道應用程序或庫是否適用於持續集成環境中的最新依賴項)。通常情況下,要更新以單一依賴(或小的依賴集),以

  • 拉在你打算使用
更新,修復bug在提供特定功能的更新,
  • 作爲參考,見

  • 相關問題