【问题标题】:Ignore tests folder when send to packagist发送到 packagegist 时忽略测试文件夹
【发布时间】:2016-11-04 06:20:49
【问题描述】:

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

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

【问题讨论】:

  • 如果有人想确保你的代码没有被破坏怎么办?
  • @MarcoAurélioDeleu 那么也许他可以下载“带测试的开发版”?
  • @MarcoAurélioDeleu 我不知道这是否有意义......这是我第一次在开源项目上实施单元测试

标签: php composer-php packagist


【解决方案1】:

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

让我们首先澄清一些困惑。

当您为您的存储库启用 Packagist 时,Packagist 将加载 composer.json 以获取有关您的项目的元数据并从标签/分支中获取版本信息。

但是您没有将 PHP 代码或任何测试发送给 Packagist。


我想忽略测试文件夹,所以当有人调用 composer require my/package 时,composer 不会下载不必要的文件

这个问题经常出现。我引用了一个详细的答案,这是我前段时间写的,它解释了很多背景:https://stackoverflow.com/a/32476500/1163786

使用带有export-ignore 指令的.gitattributes 文件

  • 从技术上讲,您可以将.gitattributes 文件添加到您的存储库,该文件为测试文件夹声明export-ignore 规则。
  • 这意味着任何 git export 都将不再拥有测试文件夹,包括 Github zip 文件。

好的,排除完成..

但是,当某人 composer require 是您的项目时,它现在将依赖 --prefer-dist 设置从 dist (zip) 安装包。 (您可以使用--prefer-source 获得测试)。


  • 如果是小型图书馆,请不要担心。开心点.. :)

  • 如果它是一个更大的应用程序,那么更好的解决方案是正确打包您的应用程序,而不是依赖git exported zip 分发。 大多数开发人员不再使用build.xml 或任何构建脚本,但在我看来这是正确的做法。

    这意味着一旦您准备好标记新版本。 您触发构建脚本,该脚本获取所有依赖项,再次运行测试,当一切正常时,删除所有测试并将文件打包以进行部署。


小提示:不要忘记在composer.json 中添加一个autoload-dev 部分供您测试。

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 2019-09-30
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    相关资源
    最近更新 更多