我正在创建一个新的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 install
或composer update --prefer-dist
时,它无法识别该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"
}
]
如果您想使其成为官方的包装套件,请在此处注册一个帐户,然后按照说明添加您的软件包。(别忘了设置更新钩。(
在这两种情况下,您现在都必须将软件包名称添加到root composer.json
的require
部分。只要您没有在包装中标记发布版本,就必须根据需要添加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.json
和require
行中的软件包名称之间有不匹配。或作曲家可能会抱怨不可避免的依赖项,您需要修复。
祝你好运!您可能仍然会遇到其他问题,但我建议您将它们作为单独的问题发布 - 除非它们很微不足道,在这种情况下,您欢迎将它们作为评论发布,我将尝试回答和/或相应地更新此帖子。