簡體   English   中英

Symfony 2捆綁有自己的composer.json

[英]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 installcomposer update --prefer-dist ,它無法識別此composer.json或進行任何嘗試來降低該依賴關系。

我的composer.json是否位於正確的位置,文件結構是否正確設置?

src中代碼的依賴關系在項目的根composer.json中定義。 /src/crmpicco/ChargebeeBundle被忽略。

如果要將以前的私有代碼作為共享程序包發布,則可以執行以下操作:

首先,請閱讀可重復使用捆綁軟件官方最佳做法 這將有助於以允許其他開發人員使用它的方式來構建項目。

然后,清理composer.json 盡管您發布的內容包含許多所需的內容,但其中也包含一些不需要的值,例如,此處不需要classmapextra 您可能想嘗試一下(隨意添加作者,關鍵字等):

{
    "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.jsonrequire部分。 只要您的軟件包中沒有標記發行版,就必須將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM