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

Kan*_*ika 11 php composer-php

我是作曲家发展的新手.我刚开始在当前项目中使用composer.而且我认为我之前已经提出过我的问题,或者我对作曲家说道:D

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

是否有任何命令删除这些测试或我需要手动删除它或什么......?:'(

Jen*_*och 7

是否有任何命令删除这些测试或我需要手动删除它或什么......?:'(

这是一个有趣的问题.

目前,您作为包消费者不能自动忽略测试.下载供应商后,没有Composer命令可以清除所有文件夹.要解决此问题,请在应用程序构建过程中清理vendor dir.它是在手动选择的文件集的引导期间删除运行,然后上载.这是一个设置步骤,可与用于生产的缓存预热或初始数据库设置相媲美.无聊的工作:(

之前请求并讨论了从供应商文件夹中删除测试文件夹(以及其他开发内容)的主题,例如参见Composer问题#1750#4438.

很多用户都想要这个功能,但遗憾的是Composer还没有提供这个功能.我想,如果有人投入时间来解决问题,Composer维护者会合并排除文件夹(reduce功能).努力建立标准.它还可以创建一个Composer插件来提供此功能.


这样的功能怎么样?

  1. 解决此问题的一种方法是为文件提供一般的黑名单/白名单功能,以便在文件中保留生产composer.json.仅添加一个排除部分只能部分地解决这个问题,因为你不能覆盖在包中做出的决定.

    • 第一个可能会通过迭代所有composer.json文件来生成一个黑名单,生成要删除的文件和文件夹列表.
    • 然后,可以使用主项目中的白名单来从黑名单(=白名单内容)中获取内容.这是为了覆盖在获取的包中做出的排除决策.
    • 最后,使用供应商文件夹中删除运行的黑名单.
    • 这意味着拉动供应商包的项目具有完全控制权.这种方法提供了很大的灵活性:如果一个包提供者将测试文件夹列入黑名单,但是消费者需要保留它的包,他可以将该包的文件夹列入白名单.但他也无能为力,并与正常的黑名单一起去.

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

  2. 另一种方法是专注于自动加载描述.

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

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

    David Grudl(@dg)在他的Composer Cleaner中使用了这种方法 .

    它的实验.做一个备份.

关于使用.gitattributesexport-ignore指令的文件

是的,这是减少git档案大小的一种方法,但它从未被PHP社区用作标准或最佳实践.

Composer维护者正在推广它的使用(参见alcoholnaderman的评论),而例如Symfony放弃了它的使用.

目前对此问题的最佳做法没有明确的指导.所以,我不确定这是一种最佳做法,我们应该真正推广或建议这一点.

它用于"Dists",取而代之的是composer --prefer-dist.

即使一些开发人员采用这种做法,使用Composer获取"Source"的很多方法都没有得到解决:hg,svn,git source.