配置插件简介

编辑

Expo 配置插件入门。


在一个项目中使用 Continuous Native Generation (CNG) 时,原生项目(androidios 目录)的变更是在不直接与原生项目文件交互的情况下实现的。相反,你可以使用配置插件在默认应用配置属性无法配置的范围内,自动配置你的原生项目。

什么是配置插件

配置插件是一个顶层的自定义配置点,它并未内置在 app config 中。使用配置插件,你可以修改在 CNG 项目的 prebuild 过程中创建的原生项目。

一个配置插件在应用配置文件的 plugins 属性中被引用,并由一个或多个插件函数组成。这些插件函数使用 JavaScript 编写,并在预构建过程期间执行。

术语表

一个典型的配置插件由一个或多个插件函数组成,它们协同工作。下图展示了配置插件的不同部分如何相互作用:

在下列指南中,我们将使用上述图示来突出下面所解释的特定术语:

插件

顶层配置插件,在应用配置的 plugins 数组中引用。这是插件的入口点。通常命名为 with<Plugin Name>。例如,withMyPlugin。它由一个或多个 插件函数 组成。

插件函数

配置插件中的一个或多个函数,被称为 插件函数 。它们封装执行平台特定修改的底层逻辑。严格来说,插件函数看起来就像顶层插件本身的函数,可以作为插件独立使用。将插件拆分成更小的函数通常有助于测试和调试。

Mod 插件函数

来自 expo/config-plugins 库的包装函数,提供一种安全的方式使用 mods 来修改原生文件。作为开发者,您将在配置插件中使用这些函数,而不是底层的 mods

Mod

底层的、特定平台的修饰符(如 mods.android.manifestmods.ios.infoplist),在预构建阶段直接修改原生项目文件。

为什么使用配置插件

配置插件可以向你的项目添加本地配置,而不是默认包含。它们可用于生成应用图标、设置应用名称、配置 AndroidManifest.xmlInfo.plist,等等。

在 CNG 项目中,最好避免手动修改这些原生项目,因为在不小心覆盖手动修改的情况下,你无法安全地重新生成它们。配置插件通过将本地项目的更改集中到一个配置文件中并在运行 npx expo prebuild 时应用它们(无论是手动还是在 CI/CD 流程中自动执行),从而以 可预测的方式 修改这些原生项目。例如,当你在应用配置中更改应用名称并运行 npx expo prebuild 时,名称将在你的本地原生项目中自动更改,而无需手动更新 AndroidManifest.xmlInfo.plist 文件。

配置插件的特征

Config 插件具有以下特征:

  • 插件是 同步 函数,接受一个 ExpoConfig 并返回经过修改的 ExpoConfig。在极少数情况下,如果用于与原生项目通信的方法是异步的,插件也可以是异步的,但它们的性能不会好。
  • 插件应使用以下命名约定:with<Plugin Functionality>,例如 withFacebook
  • 插件应为同步的,并且它们的返回值应可序列化,除了添加任何 mods
  • 插件在应用配置评估阶段始终会被评估。
  • 可选地,可以将第二个参数传递给插件以对其进行配置
  • Mods 仅在 同步 阶段的 npx expo prebuild(prebuild 过程)中进行评估,并在代码生成期间修改原生文件。因此,为确保在非 prebuild 配置场景中执行,配置插件对应用配置所做的任何修改应位于 mod 之外。

开始使用

创建一个配置插件

关于在你的 Expo 项目中创建和使用配置插件的全面指南。

模组

关于模组如何工作、如何创建它们以及最佳实践的综合指南。

开发和调试的最佳实践

了解开发和调试配置插件的最佳实践。