Php composer安装更新的composer.json文件
我熟悉这样一个概念,即当存在composer.lock文件时,Php composer安装更新的composer.json文件,php,composer-php,Php,Composer Php,我熟悉这样一个概念,即当存在composer.lock文件时,composer install命令将从该文件运行软件包 因此,当我在composer.json中添加(手动放置vendor/pkg列表)到“require”并运行命令install时,只有那些锁定在composer.lock文件中的软件包才能安装 但是当我发现我的高级开发人员忽略了git的composer.lock文件时,我对它的理解发生了冲突 当composer.json文件上的任何更新被推送到部署服务器时,命令install正在
composer install
命令将从该文件运行软件包
因此,当我在composer.json
中添加(手动放置vendor/pkg
列表)到“require”并运行命令install
时,只有那些锁定在composer.lock
文件中的软件包才能安装
但是当我发现我的高级开发人员忽略了git的composer.lock
文件时,我对它的理解发生了冲突
当composer.json
文件上的任何更新被推送到部署服务器时,命令install
正在运行,它似乎在“安装”更新的软件包
让我困惑的是,由于部署服务器的composer.lock文件中没有提到新添加的包,它是如何安装的
我在我的本地电脑上也做了同样的尝试:
composer.json的require
中添加了vendor/pkg
命令安装
warning: the lock file is not up to date with the latest changes....
nothing to install or update.
所以我的问题是:
为什么会出现两种不同的行为
如何在部署服务器中而不是本地安装.json和.lock中新添加的包
我已经研究这个有一段时间了,它让我感到不安
也许我弄错了。有人来解决这个问题吗?有几个选项:
composer require vendor/pkg的供应商
composer update vendor/pkg
(运行composer update而不使用包名将更新所有文件)在
composer.json
中添加新的依赖项时,必须运行composer update
来更新composer.lock
文件,然后composer将查看新的composer.lock
来安装所有依赖项。另外,您不应该忽略git中的composer.lock,以确保您的开发和生产都使用相同的依赖项版本,如果它们使用不同的版本,您将更难进行调试