【发布时间】:2018-02-14 16:18:02
【问题描述】:
我正在创建一个新的 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"
}
}
bundle 需要的依赖是 chargebee/chargebee-php,但是当我从 Symfony 项目的主目录中执行 composer install 或 composer update --prefer-dist 时,它无法识别这个 composer.json 或尝试删除该依赖。
我的 composer.json 是否在正确的位置,我的文件结构是否正确设置?
【问题讨论】:
-
可能不是您的问题的一部分,但
extra部分和app/和classmap的自动加载器可能不属于您的包,因为它们是在实际应用程序的作曲家中定义的.json。除此之外,您能否列出您为将此捆绑包添加到项目中所做的步骤?你的包不在 packagist 上,所以我假设你必须修改项目的 composer.json 以使其可访问? -
该捆绑包目前仅存在于我们内部的私有仓库中。所以我把它放在我的 FS 上,符号链接到我的 SF 项目中的正确位置(例如
/src/crmpicco/ChargebeeBundle)。我现在不希望它出现在 Packagist 上,因为它是 WIP。 -
没关系,但你是如何符号链接它的?你是手动做的还是add the path to repositories in your project's composer.son?如果你只是符号链接它,composer 不会拉入包,因此不会解析你的包的 composer.json。你基本上绕过作曲家,这就是我问的原因。
-
@dbrumann 我在 CLI 上对它进行了符号链接,如果这就是你的意思,则不使用作曲家。即
ln -s。感谢您的链接。你知道"require": { "my/package": "*" }指的是什么吗?考虑到我的包裹在 Packagist 上不可用,这对我有效吗? -
在您的情况下,您想使用 composer.json 中定义的名称,所以
crmpicco/ChargebeeBundle。您还可以使用标志-v运行 composer 以获得更详细的输出。这将有助于查看 composer 是否可以在其中找到目录和包。
标签: php symfony symfony-2.8 composer-php