关于 Laravel 项目下 composer.lock 文件是否需要版本控制器的讨论
6

说明

默认安装的 Laravel 会把 composer.lock 放在 .gitignore 文件中, 不加入 git 的版本跟踪, 我倒是偏向于去除掉此行, 也就是把 composer.lock 加入版本控制., 下面说下我的理由:

什么是 composer.lock 文件?

composer.lock 文件是当你第一次使用 composer install 或者 执行 composer update 后生成的文件, 此文件里定义了当前项目的代码依赖, 还有最重要的, 这些代码依赖的对应的版本.

composer.lock 文件作用是什么?

默认情况下, 当执行 composer install 的时候, Composer 会检查当前项目是否有 composer.lock 文件, 如果有的话, 就会按照此文件去下载代码依赖和其指定的版本.

好处

composer.lock 文件加版本的好处有以下:

  • 团队开发的时, clone 下代码后, 使用 composer install 可以确保大家使用的依赖包都是同一个版本的, 避免没必要的混乱;
  • 在一个现有的项目上开发的时候, 执行 composer update 后, 偶尔会发现刚刚更新了某个代码包把程序整挂了, 这个时候, 如果 composer.lock 是加入版本控制器的话, 直接一个 git diff 命令, 就可以查看到这次更新了那个包, 快速定位到问题的所在;
  • 在线上部署的时候, 可以确保线上生成环境下使用所有代码是和开发时候使用的一致, 因为 composer.lock 会确保你在执行 composer install 命令后, 按照文件里面指定的版本去下载代码依赖包;

想听听大家是怎么看待这个问题的?

附言 1  ·  2年前

Thanks @overture

其实个人的理解是这样的:

  • 应用 (Project), 就是说是独立项目而不被其它项目依赖的,是推荐把 composer.lock 文件加入版本控制的,保证开发人员安装后的环境是一样的。

  • 工具类 (Library), 用于别人依赖使用的,不建议把 composer.lock 加入版本控制,因为很容易与其它包的依赖版本造成冲突。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 6
overtrue

其实个人的理解是这样的:

  1. 应用(project), 就是说是独立项目而不被其它项目依赖的,是推荐把 composer.lock 文件加入版本控制的,保证开发人员安装后的环境是一样的。
  2. 工具类(library), 用于别人依赖使用的,不建议把 composer.lock 加入版本控制,因为很容易与其它包的依赖版本造成冲突。
2年前
overtrue

上一条回复里第二条有误,在 library 里放 composer.lock 不会造成冲突,但是 composer 并不去读它,也就是说没什么用。放不放对于依赖者都没影响,官方说明:

For your library you may commit the composer.lock file if you want to. This can help your team to always test against the same dependency versions. However, this lock file will not have any effect on other projects that depend on it. It only has an effect on the main project.

2年前
JeffLi

当然需要。。实践一下就知道了。

4个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!