如何删除composer php中的所有测试



我是作曲家开发的新手。我刚开始在我目前的项目中与作曲家合作。我想我的问题以前已经被问过了,或者我对作曲家D 一无所知

每个依赖项的供应商中都有许多测试文件和目录。我只想在上传到服务器之前删除这些测试。

是否有删除这些测试的命令,或者我需要手动删除它,或者什么…?:'(

是否有删除这些测试的命令,或者我需要手动删除它,或者什么…?:'(

这是一个有趣的问题。

目前,您作为软件包消费者不能自动忽略测试。下载供应商后,没有Composer命令来清理所有文件夹。要解决此问题,请在应用程序构建过程中清理供应商目录。它是在引导过程中对手动选择的文件集执行删除操作,然后上载。这是一个设置步骤,类似于生产中的缓存预热或初始数据库设置。钻孔作业:(

从供应商文件夹中删除测试文件夹(和其他开发内容(的主题在之前已经被请求和讨论过,例如参见Composer Issues#1750和#4438。

很多用户想要这个功能,但不幸的是Composer还没有提供。我想,如果有人投入时间来解决问题,Composer维护人员会合并一个排除文件夹(减少功能(。建立一个标准是一项艰苦的工作。也可以创建一个Composer插件来提供此功能。


这样的功能看起来是什么样子的

  1. 解决这一问题的一种方法是为composer.json文件中的文件提供一个通用的黑名单/白名单功能,以供生产使用。在我看来,只添加一个排除部分只能部分解决问题,因为您不能覆盖包中的决定。

    • 第一种方法可能是通过迭代所有composer.json文件来构建黑名单,生成要删除的文件和文件夹列表
    • 然后可以使用主项目的白名单来从黑名单中删除内容(=白名单内容(。这是为了覆盖在提取的包中做出的排除决定
    • 最后,使用供应商文件夹中的删除运行黑名单
    • 这意味着提取供应商包的项目拥有完全的控制权。这种方法提供了很大的灵活性:如果包提供商将测试文件夹列入黑名单,但使用包的开发人员希望保留它,他可以将该包的文件夹列入白名单。但他也无能为力,只能被列入正常的黑名单

    当获取Source而不是Dist.时,也许还可以尊重包的.gitattributes文件中的export-ignore设置

  2. 另一种方法是集中于自动加载描述。

    Composer在requireautoload旁边提供require-devautoload-dev。这意味着我们在开发类和生产类之间有一个明确的分离。想想phpunit依赖项和测试文件夹,它们在require-dev中定义,在autoload-dev中定义测试命名空间。

    这使得可以使用自动加载映射并删除Composers"自动加载范围"中未包含的所有文件以进行生产。

    David Grudl(@dg(在他的Composer Cleaner。

    它是实验性的。做备份。

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

是的,这是减少git档案大小的一种方法,但PHP社区从未将其作为标准或最佳实践。

Composer维护人员正在推广其使用(请参阅酒精和naderman的评论(,而例如Symfony就放弃了它的使用。

目前还没有关于这个问题的最佳做法的明确指导。所以,我不确定这是否是一个最佳实践,我们真的应该推广或建议这一点。

它代表"Dists",用composer --prefer-dist提取。

即使一些开发人员采用了这种做法,也没有考虑到使用Composer获取"Source"的许多方法:hg、svn、git-Source。

不是直接的,但如果包维护人员遵循一些最佳实践,这是可能的。

composer installcomposer update使用--prefer-dist参数,则composer将尝试下载包的可分发文件,而不是其源文件。对于GitHub上的包,这意味着它下载一个zip文件,而不是克隆存储库。

这可能仍然包括所有测试,但建议不要将测试包括在可分发中。对于GitHub上的包,如果有一个.gitattributes文件的内容如下:,则排除测试

/tests              export-ignore
/phpunit.xml        export-ignore

阅读更多:我的生产中不需要你的测试(Reddit(

有一个插件可以做到这一点:composer cleanup。作者警告说,这个包装是实验性的,所以要小心。

相关内容

  • 没有找到相关文章

最新更新