# expo-harmony-cli **Repository Path**: stonehill-2345/expo-harmony-cli ## Basic Information - **Project Name**: expo-harmony-cli - **Description**: 基于expo 兼容harmonyOS 的三端兼容方案,一键初始化脚手架,支持CNG。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: https://www.npmjs.com/package/expo-harmony-cli - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-31 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # expo-harmony-cli 使用 Expo SDK 创建 React Native 项目,并注入 HarmonyOS(OpenHarmony)开发基线的命令行工具。
用 Expo 工作流,一套 React Native 代码同时覆盖 HarmonyOS、iOS、Android 三端
## 这是什么? **一句话**:`expo-harmony-cli` 是一个命令行工具,让你用 Expo SDK 创建项目,一键生成 HarmonyOS(OpenHarmony)原生工程,同一套 JS/TS 代码同时运行在鸿蒙、iOS、Android 上。 - 🎯 **问题**:React Native 生态缺乏标准化的鸿蒙开发工具链,手动配置鸿蒙原生工程繁琐且易出错 - ✅ **解决**:一条 `npx` 命令完成项目创建、鸿蒙工程生成、依赖管理、原生注册,沿用 Expo CNG(Continuous Native Generation)工作流 ## 目录 - [快速开始](#快速开始) - [核心能力](#核心能力) - [效果预览](#效果预览) - [环境与支持范围](#环境与支持范围) - [与 Expo 标准工作流的关系](#与-expo-标准工作流的关系) - [常见问题](#常见问题) - [开发与贡献](#开发与贡献) - [文档](#文档) - [仓库与链接](#仓库与链接) ## 快速开始 ### SDK54(推荐) 使用官方 `create-expo-app` 创建 fresh 项目,并通过 npm alias 安装 15 个已发布的 `@expo-oh` HarmonyOS 运行时包: ```bash # 1. 创建 SDK54 项目(--template:default 含 Expo Router / blank-typescript;--pnpm 可换 --npm) npx expo-harmony-cli@latest create my-app --sdk 54 --template default --pnpm # 2. 生成 HarmonyOS 原生工程 cd my-app npx expo prebuild --platform harmony # 3. 构建、安装并启动到鸿蒙设备(原生代码或依赖变更后重新执行) npx expo run:harmony # 4. 日常开发:启动 Metro,JS 改动即时生效 npx expo start ``` clean Release 构建使用 `npx expo run:harmony --configuration Release --no-build-cache`。SDK54 的公开保证范围是 fresh `default` 和 `blank-typescript`:新项目不安装 `patch-package`,也不复制本地 patch;旧 SDK54 patch 项目不会自动迁移。 14 个 Expo 适配包和 `@expo-oh/react-native-screens` 已使用 `harmony` dist-tag 发布。项目仍保留 `expo`、`expo-router`、`@expo/cli` 等原始依赖键和 import,实际包通过 alias 解析到 `@expo-oh/*`。产品 CLI 继续使用无 scope 包名 `expo-harmony-cli`,不属于这 15 个运行时包的发布集合。 ### SDK52(legacy) SDK52 的 creator、injector、scanner、cleanup、依赖管理和 Harmony generator 保持原有 legacy 流程: ```bash # 1. 创建 SDK52 项目 npx expo-harmony-cli@latest my-harmony-app --sdk 52 # 2. 安装 JS 依赖并应用 HarmonyOS patch cd my-harmony-app pnpm install # 3. 首次生成 HarmonyOS 原生工程 npx expo-harmony-cli prebuild --platform harmony # 4. 安装 ArkTS / HAR 原生依赖 cd harmony ohpm install # 5. 回到项目根目录,启动 HarmonyOS Metro cd .. pnpm start:harmony ``` 随后在 DevEco Studio 中打开项目的 `harmony/` 目录,选择 `entry` 模块并运行到真机或模拟器。 ## 核心能力 | 能力 | 说明 | | ------------------- | --------------------------------------------------------------------------------------------- | | 🚀 **一键创建** | `npx expo-harmony-cli <目录名> [--sdk=52\|54]` 创建 Expo 项目,自动注入 HarmonyOS 开发基线 | | 🧬 **原生工程生成** | 生成 HarmonyOS 原生工程、Metro 配置、RNOH(React Native OpenHarmony)依赖和开发文档 | | 📦 **依赖管理** | SDK54 使用已发布的 `@expo-oh` 包;SDK52 继续由 CLI 管理 patch、alias 与原生注册 | | 🔗 **智能原生注册** | 官方优先:优先调用 RNOH 官方 `link-harmony`,未覆盖由内置映射表补充,均未覆盖逐包提示适配指引 | | 🩺 **环境诊断** | 内置 `env` / `doctor` 命令,工具链检查 + 项目健康诊断,退出码分级可接入 CI | | 🛡️ **文件保护** | autolinking 托管文件被手动修改时阻断覆盖,事务写入失败自动回滚 | | ✅ **装后验证** | SDK54 创建后校验实际包名、版本、运行入口和原生文件,失败即报错 | | 🔄 **Expo 兼容** | 保留 Android、iOS 与 Web 的 Expo 标准工作流,不影响现有开发生态 | ## 效果预览