我有一个具有以下结构的项目:
- src
----/ /* Relevant files */
- tests
----/ /* Irrelevant files */
- composer.json
- phpunit.xml
项目已经在每次提交时发送给packagist。但是,它正在发送测试文件。
我想忽略tests
文件夹,因此当有人拨打composer require my/package
时,作曲家不会下载不必要的文件
以下是我的composer.json的内容:
{
"name": "my/package",
"description": "...",
"type": "library",
"license": "MIT",
"require": {
"php": ">=7"
},
"require-dev": {
"phpunit/phpunit": ">=5.4"
},
"autoload": {
"psr-4": {
"MyProject\\": "./src"
}
}
}
答案 0 :(得分:2)
发送到packagist时忽略测试文件夹
让我们先澄清一些困惑。
当您为存储库启用Packagist时,Packagist将加载composer.json
以获取有关项目的元数据并从标记/分支获取版本信息。
但您没有将您的PHP代码或任何测试发送给Packagist。
我想忽略测试文件夹,因此当有人调用composer需要my / package时,作曲家不会下载不必要的文件
这个问题经常出现。我正在引用我前面写过的详细答案,这解释了很多背景知识:https://stackoverflow.com/a/32476500/1163786
使用.gitattributes
指令的export-ignore
文件
.gitattributes
文件,该文件为测试文件夹声明export-ignore
规则。 git export
将不再包含tests文件夹,包括Github zip文件。好的,排除完成..
但是,如果有人composer require
是您的项目,那么它现在将取决于 - prefer-dist 设置来从dist(zip)安装软件包。 (您将使用--prefer-source
)进行测试。
如果它是一个小型图书馆,请停下来担心。快乐.. :)
如果它是一个更大的应用程序,那么更好的解决方案是正确打包您的应用程序,而不是依赖于git exported
zip分发。
大多数开发人员不再使用build.xml
或任何构建脚本,但在我看来,这是正确的方法。
这意味着一旦您准备好标记新版本。 您触发构建脚本,该脚本获取所有依赖项,再次运行测试,当一切正常时,删除所有测试并打包文件以进行部署。
小提示:不要忘记将测试的autoload-dev
部分添加到composer.json
。