flutter - 为什么 pubspec 环境/sdk/使用“'>=2.7.0 <3.0.0'”而不是“^2.7.0”
问题描述
我对semver的理解非常有限
这
environment:
sdk: ^2.7.0
相当于这个
environment:
sdk: '>=2.7.0 <3.0.0'
此格式严格执行包发布
Package validation found the following error:
* ^ version constraints aren't allowed for SDK constraints since older versions of pub don't support them.
Expand it manually instead:
environment:
sdk: ">=2.7.0 <3.0.0"
Sorry, your package is missing a requirement and can't be published yet.
有什么理由为什么颤振使用latter
代替former
方法,
可以说哪个更熟悉和一致?
解决方案
一些定义:
^2.7.0
是Caret syntax
>=2.7.0 <3.0.0
是Traditional syntax
并根据文档:
因为插入符语法是在 Dart 1.8.3 中引入的,所以它需要一个 SDK 约束(使用传统语法)来确保旧版本的 pub 不会尝试处理它。例如:
environment:
sdk: '>=1.8.3 <3.0.0'
推荐阅读
- ios - (Unity 2019.2) iOS 构建在应用被用户杀死后 5 秒崩溃
- c++ - C++ 模板函数未使用的类型名
- c - 更改C中的复杂数组元素
- python - ValueError: Error when checking target: expected dense_20 to have shape (1,) but got array with shape (2,)
- r - R optim() 约束优化没有找到第一个最好的
- c - 如何找到块设备的 scsi_host_template 函数?
- php - 如何将文件名转换为数据库中可搜索的名称?
- reactjs - React-select - 根据状态值解决承诺
- javascript - 如何在发射成功Angular 8时处理从service.ts到component.ts的socket.io确认
- swift - 如何调用带参数的函数?