Php composer能否在不下载软件包的情况下生成“composer.lock”?
它确实存在一个从Php composer能否在不下载软件包的情况下生成“composer.lock”?,php,composer-php,Php,Composer Php,它确实存在一个从composer.json生成composer.lock的命令 类似ruby的bundler:$bundle lock如果您没有composer.lock 答案是“否”,您必须使用以下方法生成锁文件: composer install 不使用composer.lock安装 如果您从未运行过该命令 之前,并且也不存在composer.lock文件 只需解析composer.json文件中列出的所有依赖项 将其文件的最新版本下载到供应商目录中 在你的项目中 资料来源: NB潜在问题
composer.json
生成composer.lock
的命令
类似ruby的bundler
:$bundle lock
如果您没有composer.lock
答案是“否”,您必须使用以下方法生成锁文件:
composer install
不使用composer.lock安装
如果您从未运行过该命令
之前,并且也不存在composer.lock文件
只需解析composer.json文件中列出的所有依赖项
将其文件的最新版本下载到供应商目录中
在你的项目中
资料来源:
NB潜在问题:没有锁文件生成器将使用最新版本的依赖项
如果您已经有了一个composer.lock
如果您已经有一个composer.lock
,并且composer抱怨它不同步,您将看到以下警告:
警告:锁文件不是composer.json中最新更改的最新版本。您可能会得到过时的依赖项。运行update来更新它们
要解决此问题,可以更新锁文件本身,而无需更新依赖项。这将仅更新锁定文件中的内容哈希值
:
composer update --lock
从作曲家手册:
--lock仅更新锁文件哈希以抑制有关锁的警告
文件已过期
作曲家v2变化 在v1中,运行
composer update
将更新锁文件并进行安装,没有只写入锁文件的选项。Composer v2已将两者分开,因此Composer update
将更新锁文件,但不下载任何内容
注意:composer update
在v2中当然会创建一个更新的composer.lock,因此如果您未能保存以前的composer.lock文件,仍然无法重新创建该状态,您仍然有问题
该功能包含在v2.0版本中,请参见此处:
我不知道。这似乎是一个奇怪的要求。我认为
编写器更新--lock
可以做到这一点。“--lock:只更新锁文件哈希,以抑制关于锁文件过期的警告。”或者@Sevvlor我起初没有安装deps,运行update--lock
it安装它们。我实际上认为,如果不安装或更新,这是不可能的。我真的认为这会很有用。在我的场景中,我需要在6个应用程序中更新依赖项的版本。由于此功能不可用,我必须签出每个应用程序并安装所有依赖项(70000个文件),以便更新锁文件。跳过70000个文件的复制会很好。因此,我可以创建一个虚拟的composer.lock
文件,然后composer更新--lock
以获得与composer install
相同的锁文件吗?从我看到的情况来看,生成composer.lock的唯一方法是运行composer install。如果锁文件丢失,如果--dry run
或类似的标志写入锁文件,那就太好了。直接在composer repo-@mvorisek中为它创建了一个问题如果我能给你荣誉或赏金,我会的,你的建议将包含在composer 2.0中!只需注意composer update--lock
还将更新锁文件的其他部分,以匹配composer.json
而不仅仅是散列。