你有兴趣为原生移动端编辑器做出贡献吗?本指南是一份详细的操作说明,旨在帮助你快速上手!
请注意,这些说明主要针对 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 版本。

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

看看 doctor 是否能修复“common”(通用)和“iOS”问题。(如果此时“Android”仍有 ❌ 标记也不必担心,我们稍后会处理那些问题!)
运行演示应用
一旦所有通用和 iOS 问题都得到解决,请尝试:
npm run native start:reset #starts metro
在另一个终端中输入:
npm run native 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:

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

从 build.gradle 中检查所有相关的软件包。然后点击“Apply”以下载项目。node_modules 中的 build.gradle 文件可能还有其他相关依赖项。
如果你不想翻阅文件,堆栈跟踪会抱怨缺少软件包,但如果你走这条路,可能需要多次尝试。



更新路径
导出以下环境变量并更新 $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 Virtual Device Manager”(简称 AVD)。点击“Create Virtual Device”。选择一种你喜欢的手机类型:

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

有一些高级设置我们可以切换,但这些是可选的。点击完成。
运行演示应用
启动 metro:
npm run native start:reset
在另一个终端中运行以下命令,以便在 Android 模拟器中启动演示应用(如果模拟器尚未运行,该命令也会将其启动):
npm run native android
稍等片刻,我们将看到类似这样的内容:

单元测试
npm run test:native
集成测试
Appium 拥有自己的 doctor 工具。通过以下方式运行:
npx 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 虚拟设备),然后点击绿色的播放按钮。

确保没有正在运行的 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
等待片刻后,我们应该会看到:
