测试和调试Composer插件

Rom*_*man 6 php git composer-php

我正在为专有软件开发一个自定义编写器安装程序,我不确定我应该如何测试和调试它.

Composer仅在指定为依赖项时加载插件,因此我创建了一个测试项目,将插件定义为依赖项,如下所示:

{
    //...
    "repositories": [
        {
            "type":"git",
            "url":"/path/to/gitrepo"
        }
    ],
    "require":{
        "myvendor/my-plugin":"dev-master"
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是作曲家只使用最新的提交版本,这意味着如果我想测试一些东西,我必须先提交它.这导致了许多"无用的"一行更改提交(比如"哦,我忘了那里的逗号"),我真的不想在我的git repo历史中拥有它.

我想必须有一个更好的方法,但我找不到一个.理想情况下,我将目录定义为存储库(这将是我的工作目录),但据我所知,没有像"目录"类型存储库.

小智 6

对于开发,最好将正在进行的工作作为path类型引用。在主应用程序中,repositories像这样设置一个包:

"repositories": [
    {
        "type": "path",
        "version": "dev-master",
        "url": "/home/user/log-viewer"
    }
],
Run Code Online (Sandbox Code Playgroud)

然后需要你的插件

composer require louisitvn/log-viewer:dev-master
Run Code Online (Sandbox Code Playgroud)

他们在这里的关键是要求您的包为dev-master. 输出可能如下所示:

$ 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
Run Code Online (Sandbox Code Playgroud)

如您所见,Composervendor/为插件创建了一个符号链接,而不是克隆它,并且您始终处于工作目录中的最新更改之上。


der*_*asi 5

您可以在本地简单地编辑供应商包的代码。以后composer要更新这个包的时候,会问你如何处理修改后的文件。在这种情况下,您只需选择s隐藏更改即可。另请参阅此 stackoverflow以阐明可用选项的含义。

更新包后,您的更改将重新应用。

有关示例对话框,请参见屏幕: 在此处输入图片说明

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 (3认同)