如何在使用composer省略选择文件的同时需要一个包


how to require a package whilst omiting select files with composer

假设我想要一个带有composer的包,但该包中有一些我认为不应该包含的目录。例如,可能是tests/目录或其他什么。有没有办法从composer下载的内容中省略这个目录?

--prefer-dist标志,但这需要repo为各种文件/目录提供一个.gitattributes文件和export-ignore。但是,如果有问题的回购没有这个呢?当然,我可以提出提取请求,但如果他们不接受呢?如果项目被放弃怎么办?出于这些原因,我认为--prefer-dist标志是次优的,我想要一个除了"使用--prefer-dist"之外的答案(如果存在的话)。

Symfony试图做到这一点,他们的经验使他们重新做出了这个决定。Composer在文档中有关于使用.gitattributes的信息,但将其删除

从本质上讲,从不同的分发路径中删除包的某些部分可能会导致比解决更多的问题。从我的角度来看,CLI开关--prefer-dist--prefer-source是一个选择,要么必须克隆一个需要很长时间的巨大存储库,要么下载一个具有确切版本的ZIP,但结果应该是相等的,也就是说,我不应该因为一个决定"优化部署"的包决定从ZIP中删除文档和测试而被迫为我的所有依赖项使用--prefer-source

是的,在开发过程中,我通常会查看他们的代码和测试,以帮助我了解发生了什么,或者应该发生什么,而不是。

结论:Composer不是一个部署工具。如果你关心应用程序的大小,你的任务是删除所有你不需要或不想要的东西,并可能优化其他东西(缩小JS和CSS,优化图像等)。为你做这种优化不应该是Composers或任何包维护者的任务。