我如何告诉作曲家安装最少的文件
Posted
技术标签:
【中文标题】我如何告诉作曲家安装最少的文件【英文标题】:How do I tell composer to install minimum files 【发布时间】:2017-07-08 06:31:09 【问题描述】:我有一个composer.json
需要twig
:
"require":
"twig/twig": "~1.0",
...
这个 twig 包安装了一个名为 doc
的文件夹。
基本上,我的vendor
文件夹变得太大了,尤其是因为我用它分发了我的项目(它是一个 WordPress 插件)。
有没有办法告诉作曲家只包含“缩小”或至少包含一些文件而不是文档、测试等内容?
【问题讨论】:
getcomposer.org/doc/04-schema.md#exclude-files-from-classmaps 如果你将它作为一个包分发,为什么不写一个任务在发布之前删除多余的文件 @Pitchinnate 因为这很容易出错。升级包不会是直截了当的。另外,我不应该是决定什么不是 100% 分发所必需的人,它应该是包维护者。 【参考方案1】:我不知道我是否正确理解了您的问题。但是,如果您构建一个插件,您不提供供应商文件夹,而是在您的composer.json
文件中写入您的依赖项,并且想要使用您的插件的用户下载他的供应商文件夹中的源作为您的插件所需的依赖项。
我不认为你可以“缩小”你的依赖关系。
【讨论】:
这样想:我正在分发此代码,因为不这样做是没有意义的。这里的“插件”是一个可分发的包。 我同意@Stony 关于您不应该分发您的供应商文件夹的事实。一种可能的解决方案是添加一个安装后脚本来下载供应商依赖项。我仍然会支持您的问题,因为无论如何,最好不要下载所有这些文档。【参考方案2】:简单的回答是你不能。
Composer 以包存储库中 composer.json 中定义的方式安装包。并且(包)作者决定其中应该包含什么。这就是这里的想法。
composer 的想法是您在没有供应商目录的情况下分发您的代码,并且“客户端”应该在他身边运行 composer install。
供应商目录占用大量空间是正常的:/
【讨论】:
【参考方案3】:你不能,因为你(作为依赖客户)没有资格决定你的依赖应该如何行动。由他决定!只需交付您的项目,其中不包含依赖文件,而是包含 composer.json。
这个问题以前有人问过,每次都回答否之类的。 以下是一些示例:How to install specific files from a package using composer.jsonHow to config composer.json to retrieve specified files only?
更新 ## [重要!]
似乎只有一种方法与您需要的方法相似。
有一个选项可供对作曲家友好的项目开发人员可能使用或可能不使用,它对 --prefer-dist
和 .gitattributes
文件的处理非常棘手。
开发人员可以使用.gitattributes
文件在打包过程中忽略一些文件和文件夹以用于--prefer-dist 模式。像这样的……
/docs export-ignore
/tests export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
/phpunit.xml export-ignore
然后在提供依赖项时,Packagist 使用这些在 github 中制作的 .zip 文件来拉入 --prefer-dist 依赖项,然后在下载后将它们解压缩(比克隆快得多)。因此,如果开发人员通过在 .gitattributes 中列出测试、文档和其他逻辑上不相关的文件来忽略它们,则存档将不包含它们,变得更加轻松。
这似乎是唯一的方法,这又不是基于代码客户端的决定,显然是面向生产者-开发者的方法。
但毕竟,您可以在安装所需依赖项时检查 --prefer-dist,也许他们已经提供了此选项,您可以获得更轻量级的版本。
【讨论】:
我觉得这个答案是我拥有的最佳考虑选项。谢谢你的努力,把我的分数记下来:)¨ 试图通过点赞您的评论来返回您的一小部分积分。谢谢以上是关于我如何告诉作曲家安装最少的文件的主要内容,如果未能解决你的问题,请参考以下文章