Expo SDK 55:npx expo install --check显示依赖已是最新,但版本与新项目模板不一致
我使用 bash
npx create-expo-app@latest --template default@sdk-55 创建了一个新的Expo项目。
生成的package.json包含类似 json
"dependencies": {
"@react-navigation/bottom-tabs": "^7.15.5",
"@react-navigation/elements": "^2.9.10",
"@react-navigation/native": "^7.1.33",
"expo": "~55.0.9",
"expo-constants": "~55.0.9",
"expo-device": "~55.0.10",
"expo-font": "~55.0.4",
"expo-glass-effect": "~55.0.8",
"expo-image": "~55.0.6",
"expo-linking": "~55.0.9",
"expo-router": "~55.0.8",
... 的较新依赖版本。
( 这些版本与官方模板匹配:https://github.com/expo/expo/blob/sdk-55/templates/expo-template-default/package.json )
然而,在我现有的项目(大约一个月前创建),我有较旧的版本:
"@react-native-community/datetimepicker": "8.6.0",
"@react-navigation/bottom-tabs": "^7.7.3",
"@react-navigation/drawer": "^7.7.2",
"@react-navigation/elements": "^2.8.1",
"@react-navigation/native": "^7.1.28",
"expo": "~55.0.9",
"expo-clipboard": "~55.0.9",
"expo-constants": "~55.0.9",
"expo-dev-client": "~55.0.19",
"expo-device": "~55.0.10",
"expo-font": "~55.0.4",
"expo-glass-effect": "~55.0.8",
"expo-image": "~55.0.6",
"expo-linking": "~55.0.9",
"expo-router": "~55.0.8",
...
我运行了:npx expo install --check
输出:依赖项已是最新。
然而,某些包(例如 @react-navigation/bottom-tabs)的版本显然与新模板不一致。
-
为什么expo install --check即使版本与最新模板不同,也会把一切都报告为已是最新?
-
对于同一个SDK,更新现有Expo项目的所有依赖以匹配最新的兼容版本,正确的方法是什么?
解决方案
简短的回答是,你已经在正确的做法上了。
Expo最近才将依赖项改为遵循 Expo SDK 版本控制。这也就意味着在此之前,每个版本的编号都不同。现在它们都以 55.x.x 开头,因为你使用的是Expo 55。如果将来升级到Expo 56,例如,这将是 56.x.x。
若我们看一下 @react-navigation/bottom-tabs,最近的版本是 7.15.9,与您现在拥有的版本(7.7.3)差距并不大。这个包并非由Expo管理,因此如果你想持续更新,就需要自己定期查看并更新。