【问题标题】:Should I add Laravel vendor directory to .gitignore or not?我应该将 Laravel 供应商目录添加到 .gitignore 吗?
【发布时间】:2017-01-04 15:32:50
【问题描述】:

我的供应商目录位于.gitignore 文件中。 每次我运行 composer update 时,git 都无法跟踪 vendor 目录的更新和更改,因此我无法回退这些更改!

我的问题是:composer update 之后是否有可能应用程序崩溃或遇到错误,所以需要git reset

如果可能的话,从.gitignore 中删除供应商目录不是更好吗? 也许这个问题还有其他解决方案? (如果这是一个问题!!)

【问题讨论】:

  • 您为什么要尝试从我的答案中编辑“旁注:composer dump-autoload 不应对供应商进行任何破坏性更改”?你认为这在某些方面是不正确的吗?
  • 嗨!你在哪里对composer dump-autoload !我注意到这是我的问题中的一个错误,所以我编辑了我的问题:(将composer dump-autoload 更改为composer update)。在那之后,你的旁注就没有意义了!所以我建议进行编辑。 (对我的编辑有评论。你可能没有注意到)

标签: git laravel composer-php gitignore


【解决方案1】:

vendor 目录默认在.gitignore。这是一个好主意,因为composer 将随时在任何机器上为您安装在composer.json 中找到的所有软件包。如果您在使用某个软件包的新版本时遇到问题,只需将其改回 composer.json 并再次运行 composer update

当然,您可以从 .gitignore 中删除 vendor 目录,但这会减慢提交速度,并会占用更多磁盘和 GitHub/BitBucket 空间等。

【讨论】:

  • 谢谢!我没有注意到git commit 减速部分。但包依赖项和版本不仅在主 composer.json 文件中。每个vendor 包都有一个composer.json 文件和其他依赖项。跟踪有问题的包并更改其版本是否容易?
  • @AhmadMobaraki,composer.jsoncomposer.lock 文件都将由 git 提交。
  • @AlexeyMezenin composer.lock 包含确切的版本。当团队成员执行composer update(或添加新包,或删除包等)时,他们测试、提交更新的composer.lock 到repo,团队的其他成员执行composer install获取新的软件包版本。
  • "但这会减慢提交速度,并会使用更多的磁盘和 GitHub/BitBucket 空间等。"供应商目录压缩了几兆,它不会增加任何严重的提交时间或磁盘空间。不包括供应商目录还有其他原因,但我认为这两个在当今时代并不适用。就个人而言,我包括了供应商目录,因为它使部署和一致性更容易,这对我来说比小提交大小或项目上额外一秒钟的上传/下载要高得多。回滚/版本检查也更加一致。
  • 我们实际上在 AWS 上运行 laravel/nova 无服务器,我可以告诉你,上传大小在那里绝对很重要。
【解决方案2】:

Composer 为此提供了composer.lock 文件。

安装新包、执行composer update 等导致包更改的操作会将已安装包的确切版本写入composer.lock。您应该将此文件包含在存储库的版本控制文件中。

您可以运行composer install 以自动安装来自composer.lock 的软件包版本的确切列表。由于它将进行版本控制,您始终可以将其回滚到工作版本并再次运行 composer install

旁注:composer dump-autoload 不应对vendor 进行任何破坏性更改。

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 2020-12-10
    • 1970-01-01
    • 2020-11-04
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2013-04-14
    相关资源
    最近更新 更多