我是作曲家开发方面的新手。我刚刚开始在当前的项目中与作曲家合作。我认为我的问题之前已经被问过,或者我对作曲家很菜鸟:D
每个依赖项的供应商中有许多测试文件和目录。我只想在将其上传到服务器之前删除这些测试。
是否有任何命令可以删除这些测试或者我需要手动删除它或者什么......? :'(
是否有任何命令可以删除这些测试或者我需要手动删除它或者什么......? :'(
这是一个有趣的问题。
目前,作为包使用者的您无法自动忽略测试。
下载供应商后,没有 Composer 命令可以清理所有文件夹。要解决此问题,请在应用程序构建过程中清理供应商目录。它是在引导期间对手动选择的文件集执行删除运行,然后上传。这是一个设置步骤,类似于生产的缓存预热或初始数据库设置。无聊的工作:(
之前曾请求并讨论过从供应商文件夹中删除测试文件夹(和其他开发内容)的主题,请参阅 Composer Issues 示例#1750 https://github.com/composer/composer/issues/1750 and #4438 https://github.com/composer/composer/issues/4438.
很多用户都想要这个功能,但不幸的是 Composer 还没有提供它。我想,如果有人投入时间来解决问题,Composer 维护人员会合并排除文件夹(减少功能)。建立标准是一项艰苦的工作。还可以创建一个 Composer 插件来提供此功能。
这样的功能会是什么样子呢?
-
解决这个问题的一种方法是为文件提供通用的黑名单/白名单功能,以便在生产中保留composer.json
文件。在我看来,仅添加排除部分只能部分解决问题,因为您无法覆盖包中做出的决定。
- 第一个可能会通过迭代所有composer.json 文件来生成要删除的文件和文件夹列表来构建黑名单。
- 然后,可以使用主项目中的白名单将黑名单中的内容(=白名单内容)踢出。这是为了覆盖在获取的包中做出的排除决定。
- 最后,使用黑名单进行供应商文件夹中的删除运行。
- 这意味着拉动供应商包的项目拥有完全的控制权。这种方法提供了很大的灵活性:如果包提供者将测试文件夹列入黑名单,但包使用开发人员想要保留它,他可以将该包的文件夹列入白名单。但他也可以什么都不做,继续正常的黑名单。
也许人们也可以尊重export-ignore
设置中的.gitattributes
当获取 Source 而不是 Dist 时,会获取包的文件。
-
另一种方法是专注于自动加载描述。
作曲家提供require-dev
and autoload-dev
旁边require
and autoload
。这意味着我们在开发类和生产类之间有明确的区分。考虑 phpunit 依赖项和您的测试文件夹,定义于require-dev
和测试命名空间中定义autoload-dev
.
这使得可以使用自动加载映射并删除未包含在生产的 Composers“自动加载范围”中的所有文件。
David Grudl (@dg) 在他的作曲家清洁工 https://github.com/dg/composer-cleaner.
它是实验性的。做一个备份。
关于a的使用.gitattributes
文件与export-ignore
指示
是的,这是减少 git 档案大小的一种方法,但它从未被 PHP 社区采纳为标准或最佳实践。
Composer 维护者正在推广它的使用(参见
的评论alcohol https://github.com/composer/composer/issues/4438#issuecomment-142860181 and naderman https://github.com/composer/composer/issues/1750#issuecomment-15698801),而例如Symfony 放弃了它的使用 https://github.com/symfony/symfony/issues/6605.
目前尚无关于此问题的最佳实践的明确指南。
因此,我不确定这是否是最佳实践,我们是否应该真正推广或建议这一点。
它的“Dists”,取自composer --prefer-dist
.
即使一些开发人员采用这种做法,许多使用 Composer 获取“源”的方法也没有得到考虑:hg、svn、git source。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)