php - 为什么在使用“composer create-project”创建项目后,依赖项不是最新的可用版本?
问题描述
出于某种原因,composer create-project
命令似乎提取了陈旧的依赖项版本。
运行后create-project
,如果我chdir
创建文件夹并运行 a composer update
,则会下载较新的版本。
aherne@aherne-System-Product-Name:/var/www/html$ cd framework/ aherne@aherne-System-Product-Name:/var/www/html/framework$ composer update 使用包信息加载 composer 存储库 更新依赖项 (包括 require-dev) 包操作:0 次安装,12 次更新,0 次删除 - 更新 lucinda/request-validator (v1.0.4 => v1.0.8.1):下载 (100%)
- 更新 lucinda/internationalization (v2.0.2 => v2.0.5): 下载 (100%)
- 更新 lucinda/view-language (v2.1.1 => v2.1.7): 下载 (100%)
- 更新 lucinda/sql-data-access (v2.0.1 => v2.0.2): 正在下载 (100%)
- 更新 lucinda/errors-mvc (v1.1.4 => v1.2.1.1): 正在下载 (100%)
- 更新 lucinda/mvc (v2.0.8 => v2.1.3): 下载 (100%)
- 更新 lucinda/security (v2.0.5 => v2.0.9): 下载 (100%)
- 更新 lucinda/oauth2-client ( v1.6.2 => v1.6.3): 下载 (100%)
- 更新 lucinda/nosql-data-access (v2.0.3 => v2.0.4): 下载 (100%)
- 更新 lucinda/logging (v2.0.3 = > v2.0.5): 下载 (100%)
- 更新 lucinda/http-caching (v2.0.1 => v2.0.3.2): 下载 (100%)
- 更新 lucinda/framework-engine (v1.2.5 => v1 .3.6): 下载 (100%) 写入锁定文件 生成自动加载文件
为什么不composer create-project
首先下载最新的依赖版本?
解决方案
因为做一个create-project
基本上相当于克隆存储库,然后做一个composer install
.
并install
下载 中声明的依赖项composer.lock
,其中包括特定的版本声明。运行install
应该是安全的,并且只安装显式存储在存储库中的声明的依赖版本。
update
另一方面,读取在 上声明的版本约束composer.json
,下载符合这些约束的每个包的最新可用版本,然后更新composer.lock
.
这种行为对于全新的安装来说是不安全的,因为不仅你的直接依赖被更新,而且任何可以更新的依赖的依赖都会被更新,并且可能会意外引入兼容性问题。项目中的锁定文件表示已知的良好状态,可用于安全地安装按预期工作的项目。
参考:
推荐阅读
- python - 如何使用 python 和正则表达式合并两个文本文件
- firebase - Firebase cloud firestore:如何防止流氓字段?
- javascript - 如何在Angular中单击按钮时将嵌套滚动条向下滚动到嵌套滚动div的底部
- html - 为什么我的 CSS 没有在实时服务器上添加我今天添加的内容?
- android - 找不到 com.google.android.gms.internal.zzbfm 无法访问 zzbfm 类文件
- c# - 有没有办法关闭 Hangfire 对 serilog 所做的日志记录?
- php - 使用 RDKAFKA 将多个组 id 分配给多个消费者
- c# - 如何处理动态复选框asp.net mvc 5
- ajax - 淘汰赛:在ajax响应的html中绑定foreach数据
- python - 修复数据框中重复的索引名称