Symfony 2捆绑包与自己的作曲家



我正在创建一个新的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,但是当我从主符号项目目录中进行composer installcomposer update --prefer-dist时,它无法识别该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" 
    }
]

如果您想使其成为官方的包装套件,请在此处注册一个帐户,然后按照说明添加您的软件包。(别忘了设置更新钩。(

在这两种情况下,您现在都必须将软件包名称添加到root composer.jsonrequire部分。只要您没有在包装中标记发布版本,就必须根据需要添加dev-master,还必须将行"minimum-stability" : "dev"添加到root composer.json

现在,将代码从/src/crmpicco/ChargebeeBundle删除(或将其移到Symfony Project之外(并运行composer update --prefer-source。您现在应该找到供应商下安装的捆绑包。

您还可能意识到,作曲家将所有Symfony软件包更新为某些x.x-dev版本,这是由于" Miminum稳定性"设置所致。随它去;您可以在第一次成功运行之后删除" Miminum稳定性"线,然后再次composer update。然后,它将再次降级Symfony Dev软件包,但要独自一人。这是一种非常古怪的方法,但我还没有找到更好的方法。(也许其他人知道一种更好的处理方法。(

如果您遇到了安装问题,请仔细阅读作曲家的输出,然后按照说明进行操作。例如,您可能在捆绑包的composer.jsonrequire行中的软件包名称之间有不匹配。或作曲家可能会抱怨不可避免的依赖项,您需要修复。

祝你好运!您可能仍然会遇到其他问题,但我建议您将它们作为单独的问题发布 - 除非它们很微不足道,在这种情况下,您欢迎将它们作为评论发布,我将尝试回答和/或相应地更新此帖子。

相关内容

  • 没有找到相关文章

最新更新