发送到packagist时忽略测试文件夹

时间:2016-07-01 18:47:51

标签: php composer-php packagist

我有一个具有以下结构的项目:

- 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"
        }
    }
}

1 个答案:

答案 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