【发布时间】:2019-12-09 14:45:31
【问题描述】:
说,composer.lock 文件被 git 忽略了。
现在在生产环境中,在 composer install 时,从 composer.json 安装文件并生成 composer.lock。
几天后,我在 composer.json 中添加了几个包,并将文件推送到生产环境。
在服务器上运行 composer install 时,它会识别 json 文件中的更新包吗?还是只运行 composer.lock 文件?
由于生产服务器中的 json 和 lock 文件现在不同步,composer 如何处理这个问题?
我有这个问题是因为我工作的其他团队更喜欢 git-ignoring 锁定文件,而且看起来效果很好。
【问题讨论】:
-
你做错了。您的 composer.lock 文件应该被提交。在生产中,您应该进行 composer install。见stackoverflow.com/questions/22104102/…
-
@gview 这就是我的想法.. 但其他人似乎没有它也很好,这就是我的烦恼..
-
git-忽略
composer.lock文件是公共包的良好做法,具有定期安排的构建过程,但对于生产应用程序不是。对于生产应用程序,您需要针对完全相同组依赖项进行测试的可重复构建。例如,如果您在 CI 上成功测试您的应用程序并随后部署,但同时某些依赖项本身以破坏您的应用程序的方式更新......您的生产系统将在部署时关闭! -
只要运行
composer update,您就可以忽略锁定文件,然后将生成的composer.lock与您的应用程序一起打包,以便在构建过程中进行部署...如果您这样做有足够高的测试覆盖率。但即便如此,也存在多个开发人员检查您的应用程序的相同提交但实际上针对不同的依赖项集进行开发的风险->works-on-my-machine :)
标签: git composer-php