测试和调试Composer插件

时间:2014-04-08 11:26:13

标签: php git composer-php

我正在开发专有软件的自定义编辑器安装程序,而且我不确定我应该如何测试和调试它。

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

{
    //...
    "repositories": [
        {
            "type":"git",
            "url":"/path/to/gitrepo"
        }
    ],
    "require":{
        "myvendor/my-plugin":"dev-master"
    }
}

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

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

3 个答案:

答案 0 :(得分:4)

您可以在本地编辑供应商包的代码。当后来的作曲家想要更新这个包时,它会询问你如何处理修改过的文件。在这种情况下,您只需选择s来存储更改即可。另请参阅this stackoverflow以了解可用选项的含义。

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

请参阅屏幕以获取示例对话框: enter image description here

答案 1 :(得分:3)

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

"repositories": [
    {
        "type": "path",
        "version": "dev-master",
        "url": "/home/user/log-viewer"
    }
],

然后需要您的插件

composer require louisitvn/log-viewer:dev-master

这里的关键是要求您的软件包为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

如您所见,Composer在vendor/中为该插件建立了符号链接,而不是对其进行克隆,因此您始终处于工作目录的最新更改之中。

答案 2 :(得分:0)

为此,我使用tags--force push来库回购。 所以在我的项目中我有类似

的东西
{
    //...
    "repositories": [
        {
            "type":"git",
            "url":"/path/to/gitrepo"
        }
    ],
    "require":{
        "myvendor/my-plugin":"dev-tag"
    }
}

当我对我的库仓库进行一些更改时,我会使用dev-tag标记重新提交最后一次提交然后

git push origin master --force --tags

所以我的标签实际上是最后一次库提交。之后我只做

composer update

我的项目中包含所有库代码。

请勿将此工作流程与生产代码中使用的代码一起使用!