Is there any command to remove those tests OR I need to remove it manually OR what…? :'(
这是一个有趣的问题.
目前,您作为包消费者无法自动忽略测试.
没有Composer命令在下载供应商后清理所有文件夹.为了解决问题,清理供应商目录作为应用程序构建过程的一部分.它在一个手动选择的文件集的引导过程中运行一个删除,然后上传.这是一个设置步骤,与缓存预热或初始数据库设置相当,用于生产.无聊的工作:(
以前请求并讨论从供应商文件夹中删除测试文件夹(和其他开发内容)的主题,请参见例如Composer Issue #1750和#4438.
很多用户想要这个功能,但不幸的是,Composer还没有提供它.我猜,作曲家维护者会合并一个排除文件夹(缩小功能),如果有人投入时间来解决问题.努力建立标准.它也可以创建一个Composer插件来提供这个功能.
这样的功能怎么样呢?
>解决这个问题的一种方法是为文件保留在composer.json文件中生产的一般黑名单/白名单功能.只添加一个排除部分仅解决了这个问题,部分原因在于我的拙见,因为您不能覆盖包中的决定.
>第一个可能会通过遍历所有composer.json文件来生成一个要删除的文件和文件夹的列表来构建一个黑名单.
>那么可以使用主要项目的白名单从黑名单中踢东西(=白名单).这是为了覆盖在取得的包中做出的排除决定.
>最后,在供应商文件夹中使用黑名单进行删除运行.
这意味着拉动供应商包的项目具有完全的控制权.这种方法提供了很大的灵活性:如果一个包提供者列出一个测试文件夹,但是消费开发人员的包需要保留它,则他可以将该包的文件夹列入白名单.但他也不会做任何事情,并与正常的黑名单一起去.
也许也可以尊重包的.gitattributes文件中的导出忽略设置,当获取源而不是Dist时.
>另一种方法是集中在自动加载描述.
Composer在require和autoload旁边提供了require-dev和autoload-dev.这意味着我们在开发和生产阶段之间有明确的分离.请考虑在autoload-dev中定义的require-dev和test命名空间中定义的PHPunit依赖项和测试文件夹.
这使得可以使用自动加载地图并删除Composers“自动加载范围”中未包含的所有文件进行生产.
David Grudl(@dg)用他的方式
Composer Cleaner.
它的实验.做一个备份
关于使用export-ignore指令的.gitattributes文件
是的,这是缩小git档案大小的一种方式,但它从未被PHP社区标准或最佳做法所采纳.
作曲家维护者正在推广其使用(见
alcohol和naderman的评论),例如Symfony dropped its usage.
目前没有关于这个问题的最佳做法的明确指导.
所以,我不确定这是一个最佳实践,我们应该真的推广或建议.
它为“Dists”,与作曲家–prefer-dist取得.
即使有些开发人员采用这种做法,很多方法可以使用Composer来获取“Source”,而不是:hg,svn,git source.