【发布时间】:2018-02-24 22:56:09
【问题描述】:
情况如下。
我正在开发依赖于 package-b 的 package-a。后者托管在 bitbucket 上:
projects/
├── package-a/
├── package-b/
我需要对 package-b 进行更改并在不推送代码的情况下查看结果并执行composer update。 然后,当完成工作时,我'将推送一个新标签并将 package-a 部署到生产服务器。
所以我最终使用了composer-merge-pluging 和Composer path repositories,配置如下:
这是package-a的composer.json:
{
"name": "my/package-a",
"require": {
"my/package-b": "^1.0"
},
"repositories": [
{
"type": "vcs",
"url": "git@bitbucket.org:my/package-b.git"
}
],
"extra": {
"merge-plugin": {
"include": [
"composer.local.json"
]
},
"replace": true
}
}
这个文件将包括composer.local.json(只在我的本地机器上!这个文件没有提交也没有推送到生产服务器),我说的是“使用dev-master版本和路径存储库”:
{
"require": {
"my/package-b": "dev-master"
},
"repositories": [
{
"type": "path",
"url": "../package-b"
}
]
}
如果我从 package-a 运行 composer install,那么设置很好,那么 package-b 是符号链接的,我可以直接使用它。
但是当我使用Deployer(也对composer.lock 文件进行版本控制)将package-a 部署到我的服务器时,它会执行composer install 但锁定文件包含对package 的引用-b@dev-master 使用路径存储库(这是错误的)。
知道如何解决这个问题吗?我确定这是一个常见的,但我无法得到它。
【问题讨论】:
标签: git composer-php development-environment dependency-management