【发布时间】:2020-02-15 09:28:54
【问题描述】:
在重构遗留代码时,我尝试在编写器包上工作,同时在使用该包的项目上工作。
Composer 允许我添加本地路径存储库以检索正在开发的包,并将 symlinking this package 添加到我的项目中。
<composer.json excerpt>
"repositories": [
{
"type": "path",
"url": "../my-package/",
"options": {
"symlink": true
}
}
],
...
"require": {
"my/package": "@dev"
}
然后我做
composer update my/package --prefer-source
哪些符号链接很好。但是,当在 CI 服务器上构建我的项目时,我希望项目从远程 git 存储库中检索包,这就是我将 vcs 部分添加到我的composer.json 的原因。
{
"type": "vcs",
"url": "git@bitbucket.org:my/package.git"
}
但是,在通过composer install 构建期间,它仍然尝试在本地检索包,这在 CI 服务器上当然不可用。我猜是因为我的composer.lock 明确表示该包是从路径中检索的。
如何让它在本地和 CI 服务器上顺利运行?我似乎缺乏一个像样的工作流程。
到目前为止我尝试了什么:
- 再次添加
my/package作为开发包,但显然composer.json 会自动从非开发包中删除。另外,我不知道如何告诉作曲家将路径存储库用于开发需求,将 vcs 存储库用于无开发需求。
【问题讨论】:
-
如果问题确实出在 composer.lock 中,我会在您的 CI 服务器上执行期间重建 composer.lock 作为第一步。
-
感谢您的输入 Alex,但您所说的“将重建 composer.lock”是什么意思? Afaik composer.lock 确保我使用相同的版本,不会意外引入任何更新。
-
我的意思是您可以“动态”更改您的 composer.lock 以使用 bash 脚本从远程强制检索包,然后运行
composer install -
谢谢亚历克斯,但这对我来说似乎很棘手。
标签: php git composer-php