Php 如何使用symlinked composer包进行开发,但从vcs存储库进行构建?
在重构遗留代码时,我尝试使用composer包,同时使用使用此包的项目 Composer允许我添加本地路径存储库,用于检索开发中的包,并将其添加到我的项目中Php 如何使用symlinked composer包进行开发,但从vcs存储库进行构建?,php,git,composer-php,Php,Git,Composer Php,在重构遗留代码时,我尝试使用composer包,同时使用使用此包的项目 Composer允许我添加本地路径存储库,用于检索开发中的包,并将其添加到我的项目中 <composer.json excerpt> "repositories": [ { "type": "path", "url": "../my-package/", "options": { "symlink": true }
<composer.json excerpt>
"repositories": [
{
"type": "path",
"url": "../my-package/",
"options": {
"symlink": true
}
}
],
...
"require": {
"my/package": "@dev"
}
这些符号链接很好。但是,在CI服务器上构建项目时,我希望项目从远程git存储库检索包,这就是为什么我将vcs部分添加到我的composer.json
{
"type": "vcs",
"url": "git@bitbucket.org:my/package.git"
}
但是,在通过composer install
构建过程中,它仍会尝试在本地检索包,这在CI服务器上当然不可用。我猜是因为我的composer.lock
明确地说包是从路径检索的。
如何使其在本地和CI服务器上顺利工作?我似乎缺少一个像样的工作流程
到目前为止,我尝试的是:
- 再次添加
作为开发包,但显然composer.json将自动从无开发包中删除if。另外,我不知道如何告诉composer使用path存储库满足开发需求,使用vcs存储库满足无开发需求my/package
- 在花了好几个小时寻找合适的工作流程后,我找到了一个。希望它能帮助你
因为repository dev(比如repository的require dev)不存在,而且很快也不会存在(请参阅),所以我们需要创建两个
composer.json
文件。假设我们调用第二个composer-dev.json
。我认为你应该把这两个都写下来,并且都是最新的。要告诉composer使用composer-dev.json
,您需要在每个composer命令前面放置composer=composer-dev.json
。要进行说明,请参见以下内容:
composer.json
{
“存储库”:[
{
“类型”:“vcs”,
url:“{repo}”
}
],
“要求”:{
“供应商/包”:“{version}”,
}
}
composer-dev.json
{
“存储库”:[
{
“类型”:“路径”,
“url”:“路径/到/您的/包”,
“选择”:{
“符号链接”:正确
}
}
],
“要求”:{
“供应商/包”:“{version}”,
}
}
如您所见,composer.json
包含“vcs”存储库,composer-dev.json
包含“路径”存储库
要初始化应用程序并开始开发,请执行以下操作:
COMPOSER=COMPOSER-dev.json编写器更新
Composer创建了供应商目录,并将软件包文件夹符号链接到vendor/package
。它还创建了一个composer-dev.lock
文件,您应该提交该文件进行部署
要安装新软件包,请执行以下操作:
COMPOSER=COMPOSER-dev.json COMPOSER需要供应商/软件包
请记住,composer.json
必须是最新的,因此必须在其中添加所有新行
要构建应用程序,请执行以下操作:
COMPOSER=COMPOSER-dev.json COMPOSER安装
这应该会让你:
[RuntimeException]
Source path "path/to/your/package" is not found for package vendor/package
现在您可以运行:
composer更新--没有开发供应商/软件包
或者,如果您需要特定版本:
composer更新--没有开发供应商/包:{version}
请注意,最后一个命令前面没有COMPOSER=COMPOSER-dev.json
,因为我们正在使用COMPOSER.json
来使用vcs存储库。最后一个命令还将安装所有缺少的软件包
我希望它是有用的 我花了好几个小时寻找合适的工作流,终于找到了一个。希望它能帮助你 因为repository dev(比如repository的require dev)不存在,而且很快也不会存在(请参阅),所以我们需要创建两个
composer.json
文件。假设我们调用第二个composer-dev.json
。我认为你应该把这两个都写下来,并且都是最新的。要告诉composer使用composer-dev.json
,您需要在每个composer命令前面放置composer=composer-dev.json
。要进行说明,请参见以下内容:
composer.json
{
“存储库”:[
{
“类型”:“vcs”,
url:“{repo}”
}
],
“要求”:{
“供应商/包”:“{version}”,
}
}
composer-dev.json
{
“存储库”:[
{
“类型”:“路径”,
“url”:“路径/到/您的/包”,
“选择”:{
“符号链接”:正确
}
}
],
“要求”:{
“供应商/包”:“{version}”,
}
}
如您所见,composer.json
包含“vcs”存储库,composer-dev.json
包含“路径”存储库
要初始化应用程序并开始开发,请执行以下操作:
COMPOSER=COMPOSER-dev.json编写器更新
Composer创建了供应商目录,并将软件包文件夹符号链接到vendor/package
。它还创建了一个composer-dev.lock
文件,您应该提交该文件进行部署
要安装新软件包,请执行以下操作:
COMPOSER=COMPOSER-dev.json COMPOSER需要供应商/软件包
请记住,composer.json
必须是最新的,因此必须在其中添加所有新行
要构建应用程序,请执行以下操作:
COMPOSER=COMPOSER-dev.json COMPOSER安装
这应该会让你:
[RuntimeException]
Source path "path/to/your/package" is not found for package vendor/package
现在您可以运行:
composer更新--没有开发供应商/软件包
或者,如果您需要特定版本:
composer更新--没有开发供应商/包:{version}
请注意,最后一个命令前面没有COMPOSER=COMPOSER-dev.json
,因为我们正在使用COMPOSER.json
来使用vcs存储库。最后一个命令还将安装所有缺少的软件包
我希望它有用