Files
physical-expo/docs/DEPENDENCIES.md
2026-01-12 14:32:49 +08:00

6.4 KiB
Raw Blame History

依赖说明文档

此文档列出项目当前在 package.json 中声明的依赖(含 devDependencies),说明用途与安装/更新建议。

快速命令

  • 安装全部依赖(项目根目录):
npm install
  • 单独安装/升级某包到最新版:
npm install <package>@latest --save
  • 升级所有可升级的依赖(谨慎):
npm update

主要运行时依赖

  • @expo/vector-icons: ^15.0.3 — Expo 常用图标库,封装自 Ionicons/FontAwesome 等。

  • @react-native-async-storage/async-storage: ^2.2.0 — 持久化本地键值存储(替代已弃用的 AsyncStorage

  • @react-navigation/bottom-tabs: ^7.4.0 — 底部标签导航React Navigation

  • @react-navigation/drawer: ^7.7.10 — 抽屉式侧边导航React Navigation

  • @react-navigation/elements: ^2.6.3 — React Navigation 的 UI 元素集合。

  • @react-navigation/native: ^7.1.8 — React Navigation 核心库。

  • axios: ^1.13.2 — HTTP 客户端,用于网络请求。

  • expo: ~54.0.31 — Expo SDK 主包,注意与 react-native 版本的兼容性(使用 SDK 54 系列)。

  • expo-blur: ^15.0.8 — 模糊效果组件。

  • expo-constants: ~18.0.13 — Expo 常量(应用、设备信息)。

  • expo-dev-client: ^6.0.20 — 用于自定义开发客户端(本地调试)。

  • expo-file-system: ^19.0.21 — 文件读写与管理 API。

  • expo-font: ~14.0.10 — 字体加载与管理。

  • expo-haptics: ~15.0.8 — 触觉反馈(震动)接口。

  • expo-image: ~3.0.11 — Expo 的图片组件(性能优化)。

  • expo-image-picker: ^17.0.10 — 选择相册或摄像头图片/视频。

  • expo-intent-launcher: ^13.0.8 — 在 Android 上启动原生 Intent。

  • expo-linear-gradient: ^15.0.8 — 线性渐变背景组件。

  • expo-linking: ~8.0.11 — 处理深度链接和 URL。

  • expo-router: ~6.0.21 — 基于文件系统的路由Expo Router

  • expo-splash-screen: ~31.0.13 — 启动页控制与隐藏/显示 API。

  • expo-status-bar: ~3.0.9 — 状态栏控制组件。

  • expo-symbols: ~1.0.8 — 符号/资源工具(如需要)。

  • expo-system-ui: ~6.0.9 — 控制系统 UI状态栏/导航栏背景等)。

  • expo-updates: ^29.0.16 — 管理 OTA 更新(用于发布后热更新)。

  • expo-web-browser: ~15.0.10 — 在浏览器中打开链接的 API。

  • react: 19.1.0 — React 主库。

  • react-dom: 19.1.0 — Web 端的 React DOM仅用于 web 构建)。

  • react-native: 0.81.5 — React Native 核心库(由 Expo SDK 管理兼容性)。

  • react-native-gesture-handler: ~2.28.0 — 手势处理库React Navigation 依赖)。

  • react-native-reanimated: ~4.1.1 — 高性能动画库。

  • react-native-safe-area-context: ~5.6.0 — 处理安全区域(刘海、底部手势栏)。

  • react-native-screens: ~4.16.0 — 屏幕优化,配合 React Navigation 使用。

  • react-native-toast-message: ^2.3.3 — 全局 Toast 提示组件。

  • react-native-web: ~0.21.0 — 将 RN 组件映射到 Web。

  • react-native-webview: ^13.16.0 — 嵌入 WebView 组件。

  • react-native-worklets: 0.5.1 — 与 Reanimated 工作函数相关(若项目使用 worklets

  • expo-localization: ^14.1.0 — 获取设备语言/时区等本地化信息,常与 i18n 库配合使用。

  • i18next: ^23.0.0 — 流行的国际化引擎,处理翻译资源和回退策略。

  • react-i18next: ^13.0.0 — i18next 的 React 绑定,提供 hooksuseTranslation)和 Provider。


开发依赖

  • @types/react: ~19.1.0 — TypeScript 的 React 类型定义。
  • eslint: ^9.25.0 — 代码风格检查工具。
  • eslint-config-expo: ~10.0.0 — Expo 推荐的 ESLint 配置。
  • typescript: ~5.9.2 — TypeScript 语言支持。

国际化i18n

  • 用途:检测设备语言并根据翻译资源渲染对应文本。推荐在 App 根组件初始化并使用 Provider 包裹应用。
  • 推荐依赖expo-localization(检测系统语言)、i18next + react-i18next(翻译管理与 React 绑定)。

安装(已执行)

npm install expo-localization react-i18next i18next --save

最小初始化示例

src/i18n/index.ts 中(示例):

import * as Localization from "expo-localization";
import i18n from "i18next";
import { initReactI18next } from "react-i18next";

i18n.use(initReactI18next).init({
  compatibilityJSON: "v3",
  lng: Localization.locale.split("-")[0],
  fallbackLng: "en",
  resources: {
    en: { translation: { welcome: "Welcome" } },
    zh: { translation: { welcome: "欢迎" } },
  },
  interpolation: { escapeValue: false },
});

export default i18n;

在组件中使用:

import { useTranslation } from "react-i18next";
const { t } = useTranslation();
<Text>{t("welcome")}</Text>;

提示:若需用户切换语言,请把选择保存到 @react-native-async-storage/async-storage,初始化时优先读取该值并调用 i18n.changeLanguage(lang)


兼容性与注意事项

  • Expo SDK: 当前使用 expo 版本为 ~54.0.31SDK 54 系列)。不要随意升级 react-nativeexpo 到与 SDK 不兼容的版本。参阅官方兼容矩阵:https://docs.expo.dev/versions/latest/

  • expo-updates 与 OTA: 如果使用 expo-updates,请按照官方文档配置发布和 runtime 版本以避免更新失败。

  • 原生模块: 部分包(例如 react-native-webview, @react-native-async-storage/async-storage)在 bare workflow 或自定义 dev-client 时需要正确配置原生端(但在 managed Expo workflow 下通常可直接使用由 Expo 提供的托管版本)。

  • 动画与 Reanimated: react-native-reanimated 版本与 Babel 插件需要配套配置,确保在 babel.config.js 中正确启用 react-native-reanimated/plugin


常见命令

  • 安装新依赖(示例):
npm install axios@latest --save
  • 安装开发依赖(示例):
npm install -D typescript@latest
  • 检查安全性并自动修复可用问题:
npm audit
npm audit fix

如果你希望我:

  • 生成更详细的每个包的官方文档链接与使用示例,或
  • 根据目标平台managed / bare / web给出兼容性调整建议 请告诉我,我会继续补充。