【问题标题】:Test and Debug Composer plugins测试和调试 Composer 插件
【发布时间】:2014-05-21 01:30:00
【问题描述】:

我正在为专有软件开发一个自定义的作曲家安装程序,但我不确定我应该如何测试和调试它。

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

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

问题是 composer 只使用最新的提交版本,这意味着如果我想测试一些东西,我必须先提交它。这会导致很多“无用”的单行更改提交(比如“哦,我忘记了一个逗号”),我真的不想在我的 git 存储库历史中拥有这些。

我想一定有更好的方法,但我没有找到。理想情况下,我会将一个目录定义为存储库(这将是我的工作目录),但据我所知,没有什么比得上“目录”类型的存储库。

【问题讨论】:

    标签: php git composer-php


    【解决方案1】:

    对于开发,最好将您正在进行的工作引用为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】:

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

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

      查看示例对话框的屏幕:

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
      • @mishik 我没有选择实现图像。
      • @AbcAeffchen,感谢您为我实现图像。
      【解决方案3】:

      为此,我将tags--force push 用于库回购。 所以在我的项目中我有类似的东西

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

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

      git push origin master --force --tags
      

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

      composer update
      

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

      不要将此工作流与生产代码中使用的标签一起使用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 2019-05-11
        • 1970-01-01
        相关资源
        最近更新 更多