2012-08-01 15 views
16

我們有我們自己的Satis存儲庫,我們可以在那裏存儲我們自己的依賴關係。這工作正常。我是否可以將packagist.org中的依賴項與我自己的Composer Satis安裝進行同步或鏡像?

但如果開發者使用一個包,是不是在我們自己的倉庫內,然後將作曲家從GitHub通過packagist.org(作爲備用),把它拿來。

但我們不想依賴packagist.org。所有的依賴應該從我們自己的倉庫下載。

我們想知道,如果它有可能是賽帝從Packagist下載一個包,如果它不是本地產品尚未推出,然後保存它,它會自動添加到賽帝自己的倉庫。

這樣,我們就不必依賴手動添加到庫賽帝。

+0

Packagist只存儲包元數據。實際的源代碼來自一個倉庫(通常是gitHub)。我想你可以瀏覽作曲家的源代碼,找出他們如何列出軟件包並下載元數據。 – Tivie 2012-08-01 12:47:09

回答

15

Satis現在支持這個功能。

只要按照Satis setup instructions和以下內容添加到您的配置文件(默認名爲satis.json)。更新prefix-url並要求適當。

{ 
    "repositories": [ 
     { "type": "composer", "url": "https://packagist.org" } 
    ], 
    "require-dependencies": true, 
    "require": { 
     {{your application dependencies from composer.json}} 
    }, 
    "archive": { 
     "directory": "dist", 
     "prefix-url": "{{your server}}", 
     "skip-dev": true 
    } 
} 

然後,您可以創建一個像正常的賽帝庫:

php bin/satis build <configuration file> <build dir> 

現在,你的賽帝庫將滿足您所有的應用程序的依賴。


注意:第一次運行可能需要一段時間。後續運行速度更快。另請注意,Satis使用/ tmp作爲緩存。在/ tmp由tmpfs支持的小型內存系統上,如果您擁有較大的依賴關係樹,則可能需要增加可用空間/ tmp。

您可能還需要disable the Packagist repository在項目的composer.json文件執行所有的依賴性來自您的賽帝庫。爲此,請將

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

添加到項目的composer.json中。

+0

感謝您的評論!當它歸檔所有依賴關係時(例如'php bin/satis build'),這個配置是否仍然會使您的Satis實例依賴於Packagist?因此,如果Packagist.org在運行'php bin/satis build'時發生故障,它不會知道每個依賴項所在的位置。當然,這意味着手動維護'存儲庫'中的所有規範存儲庫URL列表,但這是您爲獨立付出的代價。或者我錯過了什麼? – 2013-08-19 21:37:32

+0

你是對的,但這並不是什麼大不了的事,因爲如果Packagist關閉,你仍然擁有在上次Satis運行期間你拉下的所有依賴關係。在實踐中,當您正在積極改變依賴關係並在正常開發和生產期間使用完全滿意的依賴關係鏡像時,我認爲您將遇到(並修復)任何外部問題(如Packagist不可用)。 – rynemccall 2013-10-06 23:13:59

+0

問題在於,您仍然需要手動添加所有依賴項。如果你有一個git倉庫,你可以添加它,但是項目在該倉庫中所需的依賴不會自動加載,這是一個很大的手動工作。 – Lars 2016-02-17 15:42:16

6

您可以使用broker實現這一目標現在。最有可能的是,這種能力將被添加到滿足自己的要求。

+0

謝謝,這看起來正是我需要的。 – Niborb 2012-08-15 16:23:07

+2

「注意:這個項目不再被主動維護,因爲[satis](https://github.com/composer/satis)現在支持類似的功能,所以你應該使用[satis](https://github.com/而不是「作曲家/滿意」)。 – MPV 2014-02-11 09:14:14

相關問題