在开发过程中如何正确测试 Composer 包?

How do you properly test a Composer package during development?

更新/我的解决方案:

在使用“自动加载”密钥进行测试之前,我不小心没有从 composer.json 中删除 VCS 要求。 现在我的理解(基于刚刚发生的事情)composer.json 的自动加载部分是在运行时处理的。如果这是正确的,我可能已经解决了我的问题。(错误,但是如果名称空间名称中缺少尾随“\\”,PHP 将抛出 InvalidArgumentException 异常,因此会造成混淆)

PSR-4 自动加载器独立于 git 存储库,不需要我在测试前提交更改,因此这个解决方案足以满足我的目的。

我暂时保留这个问题,以防有人从更广泛的角度回答我的问题。 (即回答标题中所述的问题)

问题:

我正在尝试构建一些主要用于特定项目的东西,但我认为它对其他人有用,所以我决定将其作为 Composer 包。

我想做的是在 git 存储库上开发 composer 包,然后在我自己使用该包的项目中进行手动测试。

我找到的解决方案如下,但都不够:

将本地 Git 存储库作为 VCS 存储库包含在项目的 composer.json

此方法的大问题是,对于我所做的每个小更改,我都需要先提交更改,然后才能对其进行测试。我会因为我自己愚蠢的语法或 api 错误而结束大量提交,因为我没有测试 - 不酷。

将包文件夹移动到项目文件夹并将其添加到 composer.json

中项目的“自动加载”部分

不幸的是这个方法有同样的问题。如果我想执行手动测试,我需要提交我的更改,否则当 运行 "composer update": (see "Update / My Solution" header)

[RuntimeException]
Source directory /srv/http/my-project/vendor/my-package
has unpushed changes on the current branch:
M     composer.json                                                             
A     src/EditorApplication.php

编写一个 shell 脚本,将我的源文件夹中不包括 git-related 文件的源文件复制到我项目中的自动加载文件夹中

一定有一种方法可以在 Composer 中做一些非常必要的事情,而无需诉诸于此。您如何在不在包本身内部执行实现的情况下测试对作曲家包的未提交更改?有可能吗?

What I want to do is develop the composer package on a git repository, and do manual testing inside my own project where I'm using the package.

How do you test uncommited changes to a composer package without doing the implementation inside the package itself? Is it even possible?

您可以将本地子项目的存储库定义为根项目 composer.json 中的 path 存储库。 path 允许您依赖本地目录。

引用:https://getcomposer.org/doc/05-repositories.md#path

当子项目的本地开发阶段完成后,您可以发布它并立即标记它以获得第一个版本。您通过在 Packagist 上列出一个版本来跳过 dev-master 阶段,然后可以将其包含在 the/any 父项目中。