如何使用独立的 Expo 模块
编辑
学习如何在项目中使用使用 create-expo-module 创建的独立模块,方法是使用 monorepo 或将包发布到 npm。
在现有项目中创建 Expo 模块的推荐方法 在 Expo Modules API: 开始使用 指南中进行了描述。本教程解释了在现有项目中使用 create-expo-module 创建的模块的另外两种方法:
这些方法在您仍想将模块与应用程序分开或与其他开发人员共享时非常有用。
使用 monorepo
您的项目应该使用以下结构:
- apps: 存储多个项目的目录,包括 React Native 应用。
- packages: 存储您应用使用的不同包的目录。
- package.json: 根包文件,其中包含 Yarn 工作区配置。
要了解如何将项目配置为 monorepo,请查看 与 monorepos 一起工作 指南。
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您现在可以在您的应用中使用该模块。要进行测试,请编辑 app/(tabs)/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 注册表的其他人共享。 - 运行本地 npm 注册表: 使用像 Verdaccio 这样的工具来托管本地 npm 注册表。您可以从此注册表安装模块,这对于管理公司或组织内部的包非常有用。
- 发布私有包: 使用 EAS Build 的私有注册表 安全地管理私有模块。
4
测试已发布的模块
要在新项目中测试已发布的模块,请创建一个新应用,并通过运行以下命令将模块作为依赖项安装:
- npx create-expo-app my-app- cd my-app- npx expo install expo-settings您现在可以在您的应用中使用该模块!要进行测试,请编辑 app/(tabs)/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 持久化设置的本地模块的教程。