![](/img/trans.png)
[英]Symfony 3 bundle creation always throws “Edit the composer.json file”
[英]Symfony 2 bundle with its own composer.json
我正在創建一個新的Symfony 2軟件包,旨在將其開源。 它位於/src/crmpicco/ChargebeeBundle
。
在該目錄中,我有一個composer.json
,看起來像這樣:
{
"name": "crmpicco/ChargebeeBundle",
"type": "library",
"description": "A Symfony 2 bundle which provides an easy way to handle billing and subscriptions.",
"keywords": [
"crmpicco",
"Chargebee",
"Symfony",
"Subscription"
],
"license": "MIT",
"authors": [
{
"name": "CRMPicco",
"email": "picco@crmpicco.co.uk",
"homepage": "http://www.crmpicco.co.uk",
"role": "Analyst Developer"
}
],
"require": {
"chargebee/chargebee-php": "^2.0"
},
"autoload": {
"psr-0": {
"": "src/",
"SymfonyStandard": "app/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web",
"symfony-assets-install": "relative"
}
}
捆綁軟件需要的依賴關系是chargebee/chargebee-php
,但是當我從Symfony項目主目錄執行composer install
或composer update --prefer-dist
,它無法識別此composer.json或進行任何嘗試來降低該依賴關系。
我的composer.json是否位於正確的位置,文件結構是否正確設置?
src
中代碼的依賴關系在項目的根composer.json
中定義。 /src/crmpicco/ChargebeeBundle
被忽略。
如果要將以前的私有代碼作為共享程序包發布,則可以執行以下操作:
首先,請閱讀可重復使用捆綁軟件的官方最佳做法 。 這將有助於以允許其他開發人員使用它的方式來構建項目。
然后,清理composer.json
。 盡管您發布的內容包含許多所需的內容,但其中也包含一些不需要的值,例如,此處不需要classmap
和extra
。 您可能想嘗試一下(隨意添加作者,關鍵字等):
{
"name": "crmpicco/ChargebeeBundle",
"type": "symfony-bundle",
"require": {
"chargebee/chargebee-php": "^2.0"
},
"autoload": {
"psr-4": {
"Crmpicco\\ChargebeeBundle\\": ""
}
},
"license": "MIT"
}
然后,您必須決定是要從私人倉庫還是從類似Github的服務中分發捆綁包,並希望將其注冊到Packagist中。
如果要在私人倉庫中使用它,則必須編輯全局composer.json
並添加以下部分:
"repositories": [
{
"type": "vcs",
"url": "ssh://git@yourgitserver.example.com/path.to.repo.git"
}
]
如果要使其成為正式的Packagist軟件包,請在此處注冊一個帳戶,然后按照說明添加您的軟件包。 (不要忘記設置更新掛鈎。)
在這兩種情況下,您現在都必須將包名稱添加到root composer.json
的require
部分。 只要您的軟件包中沒有標記發行版,就必須將dev-master
添加為必需版本,並在根composer.json
添加"minimum-stability" : "dev"
行。
現在,從/src/crmpicco/ChargebeeBundle
刪除代碼(或將其移至Symfony項目之外),然后運行composer update --prefer-source
。 現在,您應該在供應商下找到安裝的捆綁軟件。
您可能還意識到,由於“最小穩定性”設置,Composer將所有Symfony軟件包更新為某些xx-dev
版本。 隨它去; 您可以在第一次成功運行后刪除“最小穩定度”行,然后再次composer update
。 然后它將再次降級Symfony開發軟件包,但請不要管它。 這是一種非常古怪的方法,但是我還沒有找到更好的方法。 (也許其他人知道更好的方法來解決這個問題。)
如果安裝時遇到問題,請仔細閱讀Composer的輸出並按照說明進行操作。 例如,您可能在軟件包的composer.json
的軟件包名稱與require
行之間不匹配。 否則Composer可能會抱怨無法解決的依賴關系,您需要修復這些依賴關系。
祝好運! 您可能仍然會遇到其他問題,但是我建議您將它們作為單獨的SO問題發布-除非它們很瑣碎,否則在這種情況下,歡迎您將其發布為評論,我會盡力回答和/或相應地更新此帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.