【发布时间】:2016-07-08 21:28:17
【问题描述】:
我正在尝试与作曲家合作,并将创建自己的包。我的包项目具有以下文件结构:
scr/Scheduler.php
.gitignore
composer.json
测试类:
namespace david\Scheduler;
use Symfony\Component\Yaml\Parser;
class Scheduler
{
private $yamlParser;
public function __construct()
{
$this->yamlParser = new Parser();
}
}
和 composer.json 文件
...
"require": {
"symfony/yaml": "~3.0.3"
},
"autoload": {
"psr-4": {
"david\\Scheduler\\": "src/"
}
}
我已将所有内容提交到私有 github 存储库。目前我只有主分支,没有标签。 我的第二步是使用以下 composer.json 文件创建一个客户端项目:
"repositories": [
{
"type": "package",
"package": {
"name": "david/scheduler",
"type": "package",
"version": "dev-master",
"source": {
"url": "git@github.com:david/scheduler.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"david/scheduler": "dev-master"
}
当我运行 composer update 时,github 项目将被克隆并存储在 vendor 目录中。但只有我的包裹。不会加载对 symfony/yaml 的依赖。
vendor
composer
david/scheduler
同时 composer 创建一个空的 autoload_psr4 文件。
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
我认为我的架构中可能存在一些问题...
【问题讨论】:
-
您能展示一下您在主项目中注册私有存储库的方式吗?您可以混淆 URL 以使其保持私密
-
@ChristopheCoevoet 我已经更新了 composer.json sn-p。我还在描述中添加了以下行:
Currently I've only the master branch and no tags. -
我假设您在代码 sn-p 的错误部分添加了
repositories部分(因为在david/scheduler存储库中引用david/scheduler没有意义)。我基于此在下面回答。 -
@ChristopheCoevoet 哦,是的。复制粘贴失败。感谢您的帮助
标签: php composer-php packages