如何使用独立的 Expo 模块
编辑页面
了解如何在你的项目中使用通过 create-expo-module 创建的独立模块,方法是使用 monorepo 或将包发布到 npm。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
在现有项目中创建 Expo 模块的推荐方式 详见 Expo Modules API:入门 指南。本教程介绍了在现有项目中使用通过 create-expo-module 创建的模块的另外两种方法:
如果你仍希望将模块与应用分开维护,或与其他开发者共享,这些方法会很有用。
使用 monorepo
你的项目应采用以下结构:
- apps:用于存放多个项目的目录,包括 React Native 应用。
- packages:用于保存应用所使用的不同包的目录。
- package.json:根包文件,包含 Yarn workspaces 配置。
要了解如何将项目配置为 monorepo,请查看 使用 monorepo 指南。
1
2
3
运行模块
运行其中一个应用,确保一切正常。然后,在 packages/expo-settings 中启动 TypeScript 编译器以监听变更并重新构建模块的 JavaScript:
- cd packages/expo-settings- npm run build打开另一个终端窗口,从 apps 目录中选择一个应用,并使用 --clean 选项运行 prebuild 命令。对 monorepo 中的每个应用重复这些步骤,以使用新模块。
- npx expo prebuild --clean使用以下命令编译并运行应用:
# 在 Android 上运行应用- npx expo run:android# 在 iOS 上运行应用- npx expo run:ios现在你就可以在应用中使用该模块了。为了测试它,请编辑应用中的 src/app/index.tsx 文件,并渲染来自 expo-settings 模块的文本消息:
import React from 'react'; import { Text, View } from 'react-native'; import * as Settings from 'expo-settings'; export default function TabOneScreen() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>{Settings.hello()}</Text> </View> ); }
完成此配置后,应用会显示文本 "Hello world! 👋"。
将模块发布到 npm
你可以将模块发布到 npm,并按照以下步骤将其作为依赖安装到项目中。
1
2
3
将包发布到 npm
要将你的包发布到 npm,你需要一个 npm 账户。如果你还没有,请在 npm 网站 上创建账户。创建账户后,运行以下命令登录:
- npm login进入模块根目录,然后运行以下命令将其发布:
- npm publish你的模块现在将被发布到 npm,并可以通过 npm install 安装到其他项目中。
除了将模块发布到 npm 之外,你还可以通过以下方式在项目中使用它:
- 创建 tarball:使用
npm pack为模块创建 tarball,然后通过运行npm install /path/to/tarball将其安装到项目中。此方法有助于在发布之前本地测试模块,或与无法访问 npm registry 的其他人共享模块。 - 运行本地 npm registry:使用 Verdaccio 等工具托管本地 npm registry。你可以从该 registry 安装模块,这对于管理公司或组织内部包很有用。
- 发布私有包:使用 EAS Build 的私有 registry 安全地管理私有模块。
4
测试已发布的模块
要在新项目中测试已发布的模块,请创建一个新应用,并运行以下命令将该模块作为依赖安装:
- npx create-expo-app@latest my-app --template default@sdk-55- cd my-app- npx expo install expo-settings现在你就可以在应用中使用该模块了!要测试它,请编辑 src/app/index.tsx 并渲染来自 expo-settings 的文本消息。
import React from 'react'; import * as Settings from 'expo-settings'; import { Text, View } from 'react-native'; export default function TabOneScreen() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>{Settings.hello()}</Text> </View> ); }
最后,通过执行以下命令预构建你的项目并运行应用:
# 从头重新生成原生项目目录- npx expo prebuild --clean# 在 Android 上运行示例应用- npx expo run:android# 在 iOS 上运行示例应用- npx expo run:ios完成此配置后,你会看到应用中显示文本 "Hello world! 👋"。
后续步骤
了解如何在 Expo 模块中封装第三方原生库。
一个关于创建使用 Expo Modules API 持久化设置的原生模块的教程。