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