Php 测试和调试Composer插件
我正在为专有软件开发一个定制的composer安装程序,但我并不确定应该如何测试和调试它 Composer仅在指定为依赖项时加载插件,因此我创建了一个测试项目,将插件定义为依赖项,如下所示:Php 测试和调试Composer插件,php,git,composer-php,Php,Git,Composer Php,我正在为专有软件开发一个定制的composer安装程序,但我并不确定应该如何测试和调试它 Composer仅在指定为依赖项时加载插件,因此我创建了一个测试项目,将插件定义为依赖项,如下所示: { //... "repositories": [ { "type":"git", "url":"/path/to/gitrepo" } ], "require":{ "myven
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-master"
}
}
"repositories": [
{
"type": "path",
"version": "dev-master",
"url": "/home/user/log-viewer"
}
],
$ composer require louisitvn/log-viewer:dev-master
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing louisitvn/log-viewer (dev-master)
Symlinked from /home/user/log-viewer
问题是composer只使用最新提交的版本,这意味着如果我想测试某个东西,我必须先提交它。这导致了很多“无用”的单行更改提交(比如“哦,我忘了一个逗号了”),我真的不想在我的git回购历史中有这些内容
我想一定有更好的办法,但我没有找到。理想情况下,我会将目录定义为存储库(这将是我的工作目录),但据我所知,没有什么比“目录”类型的存储库更好的了 您只需在本地编辑供应商包的代码即可。当稍后的composer想要更新这个包时,它会询问您如何处理修改过的文件。在这种情况下,您只需选择
s
来存储更改。另请参见,以了解可用选项的含义
更新包后,将重新应用您的更改
有关示例对话框,请参见屏幕:
为此,我使用
标签和强制推送到库repo。
所以在我的项目中,我有
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-tag"
}
}
当我在我的库repo中做一些更改时,我用dev标记重新标记上次提交,然后
git push origin master --force --tags
因此,我的标记实际上是最后一次库提交。之后我只做
composer update
我的项目中有所有的库代码
不要将此工作流与生产代码中使用的标记一起使用对于开发,最好将您正在进行的工作作为路径
类型引用。在主应用程序中,在存储库中设置一个包,如下所示:
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-master"
}
}
"repositories": [
{
"type": "path",
"version": "dev-master",
"url": "/home/user/log-viewer"
}
],
$ composer require louisitvn/log-viewer:dev-master
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing louisitvn/log-viewer (dev-master)
Symlinked from /home/user/log-viewer
然后需要你的插件
composer require louisitvn/log-viewer:dev-master
这里的关键是要求您的包作为dev master
。输出可能如下所示:
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-master"
}
}
"repositories": [
{
"type": "path",
"version": "dev-master",
"url": "/home/user/log-viewer"
}
],
$ composer require louisitvn/log-viewer:dev-master
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing louisitvn/log-viewer (dev-master)
Symlinked from /home/user/log-viewer
如您所见,Composer在vendor/
中为插件创建了一个符号链接,而不是克隆它,并且您始终掌握工作目录中的最新更改。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。@mishik我没有选项来实现该图像。@AbcAeffchen,感谢您为我实现该图像。