首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用composer后需要哪些文件

使用composer后需要哪些文件
EN

Stack Overflow用户
提问于 2022-07-02 13:09:41
回答 2查看 78关注 0票数 -1

我演作曲家是为了用口香糖。它产生了以下目录:

代码语言:javascript
复制
    composer
    gabrieldarezzo
    guzzlehttp
    psr
    ralouphie
    symfony

我注意到了gabrieldarezzo/colorizzar/中的car.png文件。整个目录似乎对口香糖毫无用处,所以我删除了它,代码仍然有效。我试着删除其他一些目录,每次删除一个,但代码失败。有方法知道哪些文件是实际需要的吗?

经评论后编辑:

这个问题的目的是询问是否所有的文件composer添加是必要的。我重新运行作曲家到一个新的位置,它安装了版本6.5.8。加布里尔达雷佐没有被包括在内,所以我一定是在某个时候为其他一些软件包运行了作曲家。从所有的答复中,我可以看到,对我的问题的回答是肯定的,它们是必需的。我感谢所有对此的答复。

EN

回答 2

Stack Overflow用户

发布于 2022-07-02 13:30:05

整个目录似乎对口香糖毫无用处,所以我删除了它,代码仍然有效。

如果不讨论哪些代码仍然有效,这个语句就毫无意义--换句话说,需要哪些文件取决于您实际在做什么。

如果您要求Composer安装Guzzle,然后编写一个只显示echo 'Hello world';的PHP,那么您可以删除整个供应商目录,显然没有什么会中断。或者您可以编写echo \GuzzleHttp\RequestOptions::ALLOW_REDIRECTS;并删除除定义该常量的vendor/guzzle/guzzlehttp/src/RequestOptions.php之外的所有内容。

有方法知道哪些文件是实际需要的吗?

理论上,您可以静态地分析一段代码,递归地识别哪些代码是可访问的,从而确定所使用的最小文件集是什么。您还可以监视正在运行的应用程序,查看它打开了哪些文件,在PHP自动加载程序级别,甚至在OS /文件系统级别。

但问题是,,你为什么关心我?

重要的是要理解,除非以某种方式引用文件,否则不会实际读取文件并将其加载到内存中。这就是自动调剂的目的。因此,删除文件不会对应用程序的编译或执行速度产生任何影响。

删除这些文件将减少存储应用程序所需的磁盘空间,但是所涉及的空间占可用空间的很大一部分是很少见的。它还会减少部署它所需的带宽,但是源代码通常可以很好地压缩,因此一旦绑定到类似于tar.gz的东西中,这种节省通常也是微不足道的。

最后一个可能相关的注意事项是,在您的版本历史记录中不应该提交任何这些文件。您应该提交composer.jsoncomposer.lock,并将整个vendor目录标记为“忽略”(例如,在.gitignore文件中)。然后,通过运行composer install,可以获得任何版本所使用的确切依赖项,后者从composer.lock中读取版本。

票数 2
EN

Stack Overflow用户

发布于 2022-07-02 18:39:24

每当您需要第三方包,而不深入检查和跟踪每个文件与密码安全的内容哈希审查结果,您可以很容易地遇到您所描述的情况。

“随机”删除此类目录的问题是,它没有替换正确的依赖项检查,而只是防止(现在删除的)代码加载到生产系统中,以便在内存中进行分析和执行(或者在car.png中是出于其他原因?)。

现在,在这两个两极之间有大量的空间和通常的开发项目,并且运行这些项目的人员不够重要,以至于依赖关系实际上会得到彻底的审查,尽管他们中的大多数并不适合于某个特定的目的,也没有一个非常粗体的免责声明。

然而,如果这是一个项目,你调查,你发现一些文件看起来可疑,报告问题的项目,如果你关心,它对你意味着什么。

有时,项目不使用(扩展) 编写器包的分发(概念),并且有改进的余地(不用说,这没有对任何这些项目实践的判断)。将开发资源排除在生产用途之外。这样做的好处是您不需要“随机”删除文件,但您可以与实际的开发人员和软件发行商合作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72839294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档