composer-php - 为什么作曲家不按 Caret 版本范围提取更新的包?
问题描述
我的 composer.json
{
"name": "foo/boo",
"description": "bar",
"type": "project",
"require": {
"php": ">=7.2.0",
"yiisoft/yii2": "~2.0.15",
"bar/foo": "^0.1.0"
},
"config": {
"process-timeout": 1800,
"fxp-asset": {
"enabled": false
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
},
{
"type": "git",
"url": "ssh://deployer@gerrit.foo.pl:29418/bar"
}
]
}
Caret Version Range的 Composer 文档说我的bar/foo
包版本请求应该是这样的:> = 0.1.0 和 < 1.0.0。
但是在composer update
我得到版本 0.1.0 之后。我的 bar/foo 包有标签:
$ cd /vendor/my-bar-foo-package
$ git tag --list
v0.1.0
v0.2.0
v0.2.1
v0.2.2
在向 `"bar/foo": "0.2.2" composer update pull v0.2.2 发送版本请求后,为什么 "^0.1.0" 没有?
解决方案
Caret Version Range 的 Composer 文档说我的 bar/foo 包的版本请求应该是这样的:> = 0.1.0 和 < 1.0.0。
不,这不对:
对于 1.0 之前的版本,它还考虑到安全性并将
^0.3
其视为>=0.3.0 <0.4.0
https://getcomposer.org/doc/articles/versions.md#caret-version-range-
所以它按预期工作 -^0.1.0
相当于>=0.1.0 <0.2.0
并且0.2.2
release 不匹配这个约束。
推荐阅读
- javascript - ExpressJS 在请求正文不为空时将其显示为空
- python - 文本编辑器中的长度
- ios - React Native 0.64.2 上的新项目不是通过 Xcode 12.5 构建的
- c - libevent中延迟回调的目的是什么?
- wordpress - 通过 SSH/SFTP 上传到我的 Amazon Lightsail Wordpress 站点时,DeployHQ 出现“权限”被拒绝错误
- swift - 为什么我的 swift firestore getDocument 查询没有返回任何内容?
- flutter - DirectGraph 不在容器内居中 - Flutter
- javascript - 每次在 React 中加载页面时如何运行函数
- javascript - jQuery 中止 ajax 调用无法正常工作
- reactjs - React:将焦点添加到作为包装器的组件的第一个子级