你有兴趣为原生移动端编辑器做出贡献吗?本指南是一份详细的操作说明,旨在帮助你快速上手!

请注意,这些说明主要针对 macOS 环境。对于其他环境,React Native 快速入门文档提供了有用的指引和设置步骤。

克隆 Gutenberg

git clone git@github.com:WordPress/gutenberg.git

安装 node 和 npm

如果你正在处理多个 JS 项目,使用 node 版本管理器可能更合适。版本管理器允许你在不同版本的 node 和 npm 之间切换。

我们推荐使用 nvm。

安装 nvm 后,在克隆项目的顶层目录中运行以下命令:

nvm install 'lts/*'
nvm alias default 'lts/*' # sets this as the default when opening a new terminal
nvm use # switches to the project settings

然后安装依赖项:

npm ci

你是否有旧的现有 Gutenberg 检出副本?

如果你有现有的 Gutenberg 检出副本,请务必彻底清理 node_modules 并重新安装依赖项。
这有助于避免未来的错误。

npm run distclean
npm ci

iOS

CocoaPods

获取 React 和第三方依赖项需要 CocoaPods。安装步骤取决于你的机器上如何管理 Ruby。

系统 Ruby

如果你使用的是 MacOS 自带的默认 Ruby,则需要使用 sudo 命令来安装诸如 Cocoapods 之类的 gem:

sudo gem install cocoapods

注意,Mac M1 芯片与 Cocoapods 不直接兼容。如果遇到任何问题,请尝试运行以下命令来安装 ffi 包,这将使 pods 能够以正确的架构进行安装:

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

Ruby 管理器

如果你使用的是 Ruby 版本管理器,则可能无需手动安装 Cocoapods 或 ffi 包。请参考你所选用的管理器的文档以获取指导。

如果你是在WordPress iOS 应用内(而不仅仅是演示应用)运行 Gutenberg,建议使用 rbenv 作为管理器。

设置 Xcode

通过 App Store 安装 Xcode,然后打开它:

  • 接受许可协议。
  • 确认 Xcode > Preferences > Locations > Command Line Tools 指向当前的 Xcode 版本。

Xcode 命令行工具设置的截图。

react-native doctor

可以使用 react-native doctor 来识别开发环境中缺失的内容。在你的 Gutenberg 检出目录中,或者相对于 /packages/react-native-editor 文件夹的位置,运行:

npx @react-native-community/cli doctor

react-native-community/cli doctor 工具在终端中运行的截图。

看看 doctor 是否能修复“common”(通用)和“iOS”问题。(如果此时“Android”仍有 ❌ 标记也不必担心,我们稍后会处理那些问题!)

运行演示应用

一旦所有通用和 iOS 问题都得到解决,请尝试:

npm run native start:reset #starts metro

在另一个终端中输入:

npm run native ios

等待所有内容构建完成后,演示应用应该会在 iOS 模拟器中运行:

iOS 模拟器中的块编辑器截图。

Android

Java Development Kit (JDK)

React Native 文档中推荐的 JDK 称为 Azul Zulu。它可以使用 Homebrew 进行安装。要安装它,请在安装 Homebrew 后在终端中运行以下命令:

brew tap homebrew/cask-versions
brew install --cask zulu11

如果你的系统中已经安装了 JDK,它应该是 JDK 11 或更新版本。

设置 Android Studio

要编译 Android 应用,请下载 Android Studio。

接下来,打开一个现有项目并选择你克隆的 Gutenberg 文件夹。

从这里,点击下图中高亮的立方体图标以访问 SDK Manager。另一种进入 SDK Manager 的方法是导航到 Tools > SDK Manager:

突出显示 Android Studio 中软件包管理器按钮位置的截图。

我们可以在此屏幕上下载 SDK 平台、软件包和其他工具。特定版本隐藏在“Show package details”复选框后面,请勾选它,因为我们的构建需要特定的版本用于 E2E 测试和开发:

Android Studio 中软件包管理器的截图,突出了 Show Package Details 复选框。

从 build.gradle 中检查所有相关的软件包。然后点击“Apply”以下载项目。node_modules 中的 build.gradle 文件可能还有其他相关依赖项。

如果你不想翻阅文件,堆栈跟踪会抱怨缺少软件包,但如果你走这条路,可能需要多次尝试。

build.gradle 配置文件的截图。

软件包管理器显示 SDK Platforms 的截图。

软件包管理器显示 SDK Tools 的截图。

更新路径

导出以下环境变量并更新 $PATH。如果我们终端中使用的是 zsh,通常可以将此添加到我们的 ~/.zshrc 文件中;
如果终端仍在使用 bash,则添加到 ~/.bash_profile。

### Java that comes with Android Studio:
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home
### Android Home is configurable in Android Studio. Go to Preferences > System Settings > Android SDK
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

保存然后 source,或者打开一个新终端以拾取更改。

source ~/.zshrc

或者

source ~/.bash_profile

如果找不到 SDK 路径,你可以通过访问 Android Studio > Preferences > System Settings > Android SDK 来验证其位置。

Android Studio 中查找 SDK Path 位置的截图。

创建新的设备镜像

接下来,让我们创建一个虚拟设备镜像。点击右下角带有安卓机器人的手机图标。

查找 android device manager 按钮位置的截图。

这会调出“Android Virtual Device Manager”(简称 AVD)。点击“Create Virtual Device”。选择一种你喜欢的手机类型:

Virtual Device Configuration 设置的截图。

选择目标 SDK 版本。这是在 build.gradle 文件中设置的 targetSdkVersion。

Android Device Manager 工作流中选择系统镜像的截图。

有一些高级设置我们可以切换,但这些是可选的。点击完成。

运行演示应用

启动 metro:

npm run native start:reset

在另一个终端中运行以下命令,以便在 Android 模拟器中启动演示应用(如果模拟器尚未运行,该命令也会将其启动):

npm run native android

稍等片刻,我们将看到类似这样的内容:

Android 模拟器中的块编辑器截图。

单元测试

npm run test:native

集成测试

Appium 拥有自己的 doctor 工具。通过以下方式运行:

npx appium-doctor

appium-doctor 工具在终端中运行的截图。

解决任何必需的依赖项。

iOS 集成测试

如果我们知道可以无问题地运行 iOS 本地环境,那么针对 iOS 的端到端测试(E2E)就很简单了。停止任何正在运行的 metro 进程。该进程之前是通过 npm run native start:reset 启动的。

然后在终端中输入:

npm run native test:e2e:ios:local

传入文件名也应该可以用来运行部分测试:

npm run native test:e2e:ios:local gutenberg-editor-paragraph.test.js

如果一切顺利,结果应该如下所示:

Android 集成测试

创建一个新虚拟设备(),其配置需与 packages/react-native-editor/device-tests/helpers/caps.js 中指定的设备相匹配。在本文撰写时,这对应的是 Pixel 3 XL 镜像,使用 Android 9 (API 28)。

首先启动虚拟设备。点击手机图标返回 AVD(Android 虚拟设备),然后点击绿色的播放按钮。

如何启动 Android 模拟器的截图。

确保没有正在运行的 metro 进程。该进程之前是通过 npm run native start:reset 启动的。

然后在终端中运行:

npm run native test:e2e:android:local

传入文件名也应该可以用来运行部分测试:

npm run native test:e2e:android:local gutenberg-editor-paragraph.test.js

等待片刻后,我们应该会看到:

Android 模拟器中区块编辑器集成测试的截图。