假设我想写一个新的应用程序。
/workspace/exampleapp/
.git
src/
vendor/
app/
component1/
.git
src/
composer.json
component2/
.git
src/
composer.json
composer.json
我有三个git存储库。他们没有遥控器。我还有三个composer.json
个文件。
{
"name": "app/app",
"type": "project",
"license": "MIT",
"require": {
"app/component1": "dev-master",
"app/component2": "dev-master"
},
"autoload": {
"psr-4": {"app\\": "src/"}
}
}
{
"name": "app/component1",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {"app\\": "src/"}
}
}
{
"name": "app/component2",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {"app\\": "src/"}
}
}
如果我在项目根目录中运行composer update
,我收到错误在任何版本中都找不到请求的包app / component1,包名中可能会出现拼写错误。
我需要更改哪些才能使其正常工作?有没有办法不将组件目录移出vendor
目录或创建远程存储库?
谢谢!
答案 0 :(得分:1)
我认为你患有the XY problem - 我会假装你真的问过“我如何使用具有以下要求的Composer设置项目?”
在这种情况下答案是,设置你的目录如下:
/workspace/app/ composer.json src/ /workspace/components/ component1/ composer.json src/ component2/ src/ composer.json
设置每个组件的作曲家文件,如下所示:
<强> /workspace/components/component1/composer.json 强>
{
"name": "app/component1",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {"app\\": "src/"}
}
}
告诉您的apper.json文件,您的应用程序将组件目录用作本地git存储库。
<强> /workspace/app/composer.json 强>
{
"name": "app/app",
"type": "project",
"license": "MIT",
"require": {
"app/component1": "dev-master",
"app/component2": "dev-master"
},
"autoload": {
"psr-4": {"app\\": "src/"}
},
"repositories": [
{
"type": "vcs",
"url": "/workspace/components/component1"
},
{
"type": "vcs",
"url": "/workspace/components/component2"
}
],
}
当你进行第一次“作曲家更新”时,你应该使用选项composer update --prefer-source
来运行它。这将迫使作曲家为代码做一个git克隆,而不是只下载一个拉链球并将其解压缩。
(可能不需要添加--prefer-source,当从本地目录存储库获取时,默认情况下,作曲家可能会默认克隆。)
您现在可以编辑供应商目录中组件的代码,能够将其单独提交到应用程序代码,并且能够将其推送到{{1}处的“远程”git存储库}。