我是作曲家发展的新手。我刚开始在当前项目中使用composer。而且我认为我之前已经提出过我的问题,或者我对作曲家说道:D
每个依赖项的供应商中都有许多测试文件和目录。我只是想在将它们上传到服务器之前删除这些测试。
是否有任何命令来删除这些测试或我需要手动删除它或什么......? :'(
我是作曲家发展的新手。我刚开始在当前项目中使用composer。而且我认为我之前已经提出过我的问题,或者我对作曲家说道:D
每个依赖项的供应商中都有许多测试文件和目录。我只是想在将它们上传到服务器之前删除这些测试。
是否有任何命令来删除这些测试或我需要手动删除它或什么......? :'(
是否有任何命令来删除这些测试或我需要手动删除它或什么......? :'(
这是一个有趣的问题。
目前,您作为包消费者不能自动忽略测试。 下载供应商后,没有Composer命令可以清除所有文件夹。要解决此问题,请在应用程序构建过程中清理vendor dir。它是在手动选择的文件集的引导期间删除运行,然后上载。这是一个设置步骤,与生产的缓存预热或初始数据库设置相当。无聊的工作:(
之前请求并讨论了从供应商文件夹中删除测试文件夹(和其他开发内容)的主题,请参阅例如Composer Issues #1750 和 #4438。
很多用户都想要这个功能,但遗憾的是Composer还没有提供这个功能。我想,如果有人投入时间来解决问题,Composer维护者会合并排除文件夹(reduce功能)。努力建立标准。它还可以创建一个Composer插件来提供此功能。
解决这个问题的一种方法是为文件提供一般的黑名单/白名单功能,以便生成文件 composer.json
文件。仅添加一个排除部分只能部分地解决这个问题,因为你无法覆盖在包中做出的决定。
也许人们也可以尊重 export-ignore
中的设置 .gitattributes
获取源的文件,而不是Dist。
另一种方法是专注于自动加载描述。
作曲家提供 require-dev
和 autoload-dev
旁边的 require
和 autoload
。这意味着我们在开发和生产类之间有明确的分离。想想phpunit依赖项和你在中定义的测试文件夹 require-dev
和测试命名空间 autoload-dev
。
这使得可以使用自动加载映射并删除未包含在Composers“自动加载范围”中的所有文件以进行生产。
David Grudl(@dg)在他的作品中使用了这种方法 作曲家清洁工。
它的实验。做一个备份。
.gitattributes
文件 export-ignore
指示是的,这是减少git档案大小的一种方法,但它从未被PHP社区用作标准或最佳实践。
Composer维护者正在推广它的使用(参见 的评论 醇 和 naderman),例如 Symfony放弃了它的使用。
目前对此问题的最佳做法没有明确的指导。 所以,我不确定这是一种最佳做法,我们应该真正推广或建议这一点。
它用于“Dists”,取而代之的是 composer --prefer-dist
。
即使一些开发人员采用这种做法,使用Composer获取“Source”的很多方法都没有得到解决:hg,svn,git source。
不是直接的,但如果软件包维护者遵循一些最佳实践,那么这是可能的。
使用 --prefer-dist
争论 composer install
和 composer update
然后作曲家会尝试下载包的可分发而不是源代码。对于GitHub上的包,这意味着,它下载一个zip文件而不是克隆存储库。
这可能仍然包括所有测试,但建议不要在distributable中包含测试。对于GitHub上的软件包,如果存在,则排除测试 .gitattributes
文件内容如下:
/tests export-ignore
/phpunit.xml export-ignore
阅读更多: 我的生产中不需要你的测试(Reddit)
有一个插件可以做到这一点: 作曲家清理。作者警告说包装是实验性的,所以要小心。