我刚刚安装了一个用composer.lock文件提供的PHP应用程序。
运行composer install时,命令行工具仍然要求composer.json ....我没有。
在作曲家文档中,它说安装命令首先查找composer.lock然后查找composer.json。
为什么composer仍然要求安装我的依赖项不需要的文件?
composer install>回报: Composer找不到composer.json文件
答案 0 :(得分:3)
您仍然需要composer.json文件来安装或更新任何依赖项。 拥有composer.lock文件意味着编写器不会搜索依赖项的最新提交
几周前在Twitter上,我注意到OpenCFP项目在其存储库中没有composer.lock文件。 “那么什么,”你可能会说,“只是作曲家安装而你走了。你会得到相同的依赖,对吧?“ 错。
锁定文件的目的是记录安装的确切版本,以便重新安装。这意味着,如果您的版本规格为1. *并且您的同事运行安装1.2.4的composer update,然后提交composer.lock文件,那么当您编写作曲家安装时,您也将获得1.2.4,甚至如果1.3.0已经发布。这可以确保每个参与项目的人都拥有相同的版本。
答案 1 :(得分:0)
您必须拥有composer.json
来安装依赖项,因为它是列出依赖项的文件。请参阅documentation。
composer.lock
列出已安装的依赖项。作曲家首先看它,以保持版本的一致性。
(文件说明)[https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock]:
当存在composer.lock文件时运行install会解析并安装您在composer.json中列出的所有依赖项,但Composer会使用composer.lock中列出的确切版本来确保程序包版本对于处理您的所有人都是一致的项目
如果您丢失了composer.json
,则可以对composer.lock
进行逆向工程。打开它并阅读所有已安装的软件包,然后创建一个需要它们的composer.json
。并非每个软件包都会直接依赖于您的问题:您应该识别并删除那些不存在的软件包。