手把手带你使用 DevEcoCli 和 DevEcoCode 快速开发三方库
前言
之前的章节中已经介绍了 DevEcoCli (集 HarmonyOS 开发全链路功能的终端工具) 和 DevEcoCode(类似 Claude Code 的鸿蒙官方的智能体),结合上述两个能力,开发者也可以根据项目需求去开发三方库,发布到OpenHarmony 三方库中心仓上(https://ohpm.openharmony.cn/#/cn/home)
发布三方库流程

发布一个三方库到 OpenHarmony 三方库中心仓,整体可以分为 6 个步骤:账号准备 → 密钥配置 → 工程创建 → 库开发 → 打包构建 → 发布审核。
1. 注册账号
前往 OpenHarmony 三方库中心仓 注册账号并完成实名认证

2. 生成密钥 & 配置认证
OHPM 使用 RSA 公私钥 校验发布权限(仅支持 PEM 格式)。
# 1. 生成 RSA 公私钥对(密码必须非空)
ssh-keygen -m PEM -t RSA -b 4096 -f ~/ohpmkey
# 2. 配置私钥路径
ohpm config set key_path ~/ohpmkey
# 3. 配置发布码 publish_id(在个人中心获取)
ohpm config set publish_id UR7FAMETVU然后把 ohpmkey.pub 公钥内容复制粘贴到「个人中心 → 公钥管理」中上传。
3. 创建 Library 模块
使用 DevEco Studio:「New → Module → Static Library」创建一个静态库模块;也可以直接用 devecocli 创建工程后在其中添加 Library 模块。
4. 完善 oh-package.json5 & 必备文件
4.1 oh-package.json5
模块级 oh-package.json5 负责描述这个可发布的包,必填字段有:name、version、main、license。
{
name: "@ericbyliang/lib_watermark", // 必须带组织名
version: "1.0.0", // 遵循 semver 规范
main: "Index.ets",
description: "A HarmonyOS watermark component.", // 不能是默认占位符
author: "Eric Liang", // 不能为空
license: "Apache-2.0",
keywords: ["watermark", "security", "HarmonyOS"],
dependencies: {},
}注意:要发布的 HAR 模块,其所有直接依赖必须在自己的
oh-package.json5里声明完整,不能依赖工程级配置"补漏"。
4.2 三个必备文件
OpenHarmony 仓库审核较严格,发布的 .har / .tgz 包必须包含以下三个文件,且内容非空、符合规范:
| 文件 | 要求 |
|---|---|
LICENSE | 真实许可证全文,推荐 Apache-2.0 |
readme.md | 至少包含安装命令和使用说明 |
changelog.md | 至少包含版本号及该版本的修改内容 |
# 快速生成 LICENSE(Apache 2.0)
curl https://www.apache.org/licenses/LICENSE-2.0.txt -o LICENSE5. 打包构建 HAR
在 DevEco Studio 中选中 Library 模块,执行「Build → Make Module」,构建完成后会在 build 目录下生成 .har 文件。
注意:debug 模式构建的 HAR 包含源码,发布时请使用 release 模式,避免代码泄露。
6. 发布 & 审核
# 执行发布(会提示输入第 2 步设置的密码)
ohpm publish lib_watermark.har发布成功后几分钟内会进入审核状态,审核通过并上架后,其他开发者即可通过名称安装:
ohpm install @ericbyliang/lib_watermark⚠️ 一旦某个
name + version组合发布并审核通过,该名称和版本号将被永久占用,无法再次使用(即使下架),版本迭代需递增version字段。
常见问题速查
| 现象 | 原因 / 解决方案 |
|---|---|
HttpCode 400 ... must contain a non-empty changelog.md | 缺少或空的 changelog.md,补上即可 |
| 公钥校验失败 | 密钥不是 PEM 格式 RSA;重新用 ssh-keygen -m PEM 生成 |
description / author 被拒审 | 使用了默认占位符或空值,填写真实内容 |
| 名称或版本已存在 | 该 name+version 已被占用,递增 version 后重新发布 |
| 安装签名不一致 | 本地缓存问题,执行 ohpm install 强制刷新 |
DevEcoCode 发布三方库实战
启动 DevEcoCode
deveco
输入三方库的需求
帮我在当前目录创建一个新工程,用于开发 HarmonyOS ArkTS 工具库(HAR 包)并且发布
用 ArkTS 开发一个 HarmonyOS 校验工具库 `harmony-validator`,发布为 HAR 包。
模块:Validator.ets
实现静态方法,纯逻辑无 UI:
- `isPhone(s): boolean` — 手机号
- `isEmail(s): boolean` — 邮箱
- `isIDCard(s): boolean` — 身份证 18 位(含末位校验码加权算法)
- `isURL(s): boolean` — URL
- `isLicensePlate(s): boolean` — 车牌(含新能源)
要求
- ArkTS 严格模式,禁用 `any` / `as`
- 所有方法 `static`,参数返回值明确类型
- 正则常量抽到 `RegexKit.ets` 共享
- 公开方法加 `/** */` 注释(含示例)
- `Index.ets` 统一 re-export
- `src/test/` 下用 @ohos/hypium 写单测,每方法 ≥3 用例(正常/边界/非法)
交付
1. 目录结构
2. Validator.ets + RegexKit.ets
3. 单测代码
4. oh-package.json5 + README.md(中文 + 安装 + 示例)
先输出目录结构,确认后再写代码。
直接复制给 AI 即可,约 200 行代码量,半天能跑通。确认需求
根据 DevEcoCode 给出的计划文档,如果需要调整,可以直接在对话中进行沟通,如果没有问题,可以确定,让它执行。

DevEcoCode 会按照计划去执行任务。

得到产物
等待片刻,工程和对应的核心代码也得到了,如下:

核心文件与逻辑讲解
DevEcoCode 生成的工程是一个标准的 Static Library(HAR)模块,整体结构非常精简:
HarmonyValidator/
├── library/ # HAR 模块根
│ ├── Index.ets # 统一入口(对外导出)
│ ├── oh-package.json5 # 模块级包描述
│ ├── build-profile.json5 # 构建配置
│ └── src/main/
│ ├── module.json5 # 模块清单(类型:har)
│ └── ets/
│ ├── RegexKit.ets # 共享正则常量集合
│ └── Validator.ets # 校验工具类(核心逻辑)
├── build-profile.json5 # 工程级构建配置
└── oh-package.json5 # 工程级包描述下面挑 4 个最关键的文件讲解。
1. Index.ets — 统一入口
这是 oh-package.json5 中 main 字段指向的入口文件,也是使用方 import 时实际加载的模块。它只做一件事:把内部实现类统一 re-export 出去,对外屏蔽 src/main/ets/... 的真实路径。
// 使用方只需这样写,无需关心内部目录结构
import { Validator } from "harmony-validator";// Index.ets
export { Validator } from "./src/main/ets/Validator";
export { RegexKit } from "./src/main/ets/RegexKit";这是发布三方库的推荐做法:内部目录可自由重构,只要 Index.ets 的导出不变,使用方代码就不用改。
2. RegexKit.ets — 共享正则常量
把所有正则集中到一个类里,以 static readonly 暴露,方便 Validator 和外部共用。
export class RegexKit {
/** 中国大陆手机号:1 开头,第二位 3-9,共 11 位。 */
static readonly PHONE: RegExp = new RegExp("^1[3-9]\\d{9}$");
/** 电子邮箱 */
static readonly EMAIL: RegExp = new RegExp(
"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"
);
/** 18 位身份证格式(校验码由 Validator 计算) */
static readonly IDCARD: RegExp = new RegExp("^\\d{17}[\\dXx]$");
/** URL(http / https) */
static readonly URL: RegExp = new RegExp(
"^https?:\\/\\/[A-Za-z0-9.-]+(:\\d+)?...$"
);
/** 车牌号(含新能源) */
static readonly LICENSE_PLATE: RegExp = new RegExp("^[京津沪渝...][A-Z]...$");
}一个 ArkTS 的关键约束:ArkTS 严格模式禁止使用正则字面量(如
/^1\d{10}$/),所有正则都必须用new RegExp('...')构造。DevEcoCode 生成的代码严格遵守了这一点,这也是手写正则时最容易踩的坑。
3. Validator.ets — 核心校验逻辑
这是库的主角,一个纯逻辑工具类(无 UI 依赖),所有方法都是 static,调用方式极简:
Validator.isPhone("13812345678"); // true
Validator.isEmail("a.b+c@example.cn"); // true
Validator.isIDCard("11010519491231002X"); // true大部分方法(isPhone / isEmail / isURL / isLicensePlate)逻辑相同:先判空,再用 RegexKit 里对应的正则 test 一下。
真正有技术含量的是 isIDCard——它不只看格式,还实现了 GB 11643-1999 标准里的校验码加权算法:
static isIDCard(s: string): boolean {
// 1. 先用正则校验基本格式:前 17 位数字 + 末位数字/X
if (!RegexKit.IDCARD.test(s)) return false
// 2. 前 17 位逐位乘以加权因子,求和
let sum: number = 0
for (let i = 0; i < 17; i++) {
const digit: number = s.charAt(i).charCodeAt(0) - '0'.charCodeAt(0)
sum += digit * ID_WEIGHTS[i] // ID_WEIGHTS = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
}
// 3. 求和结果模 11,映射到标准校验码表
const expected: string = ID_CHECK_CODES[sum % 11] // ['1','0','X','9','8','7','6','5','4','3','2']
// 4. 与身份证第 18 位比对(X 大小写都算通过)
return expected === s.charAt(17).toUpperCase()
}也就是说,随便填一个格式正确但数字瞎编的身份证号(比如 110105194912310021),isIDCard 会因为校验码对不上而返回 false,这是单纯正则做不到的。
4. oh-package.json5 — 包描述
模块级配置,决定了这个库在中心仓的"身份",也是审核能否通过的关键。DevEcoCode 初版生成的是一个精简配置,经过实际发布打磨后,最终版本补齐了 homepage / repository / keywords / tags 等字段:
{
name: "harmony-validator",
version: "1.0.0",
description: "HarmonyOS ArkTS 校验工具库:手机号 / 邮箱 / 身份证(含 GB11643 校验码) / URL / 车牌(含新能源),纯逻辑无 UI。",
main: "Index.ets", // 入口文件(指向第 1 个讲解的 Index.ets)
author: "万少",
license: "Apache-2.0",
homepage: "https://github.com/itcastWsy/harmony-validator#readme",
repository: "https://github.com/itcastWsy/harmony-validator.git",
bugs: {
url: "https://github.com/itcastWsy/harmony-validator/issues",
},
keywords: [
"HarmonyOS",
"OpenHarmony",
"ArkTS",
"validator",
"validation",
"phone",
"email",
"idcard",
"url",
"license-plate",
],
tags: ["Tools"],
ohos: { org: "opensource" },
dependencies: {},
}几个字段的作用:
main: "Index.ets":把前面讲的"桶文件入口"和包管理器串起来——使用方import { Validator } from 'harmony-validator'时,ohpm 据此找到Index.ets。homepage/repository/bugs:指向 GitHub 仓库,中心仓详情页会展示,也方便用户提 issue。keywords:影响中心仓搜索的匹配度,建议覆盖平台 + 语言 + 功能三类关键词。tags: ["Tools"]:中心仓的分类标签,决定了库出现在哪个分类列表里。ohos.org: "opensource":开源库标识。
💡 初版只有
name / version / main / author / license五个必填字段,发布时审核也能过;但补齐keywords和repository后,在中心仓被搜到的概率和可信度都会明显提升。
推送流程
可以 和 DevEcoCode 对话,让它检查是否具备发包的基本要求了。

然后继续补充信息

一切就绪好,输入命令进行推送。
ohpm publish library/build/default/outputs/default/library.har过程中需要你提供当前创建私钥的时候的密码

输入完毕后,可以查看到成功推送的 提示。

三方库中也可以查看到审核信息

总结
本篇以 harmony-validator(一个 ArkTS 校验工具库)为例,完整演示了从零开发到发布 OpenHarmony 三方库的全流程。
整个流程可以归纳为两条主线:
1. 发布流程主线(6 步标准化)
这是所有鸿蒙三方库都要走的标准路径,记住这 6 步即可:
| 步骤 | 关键动作 | 易踩的坑 |
|---|---|---|
| ① 注册组织 | 中心仓实名 + 创建组织 | 包名格式 @组织名/包名,组织名不可改 |
| ② 配置密钥 | RSA 公私钥 + publish_id | 必须 PEM 格式;密码非空 |
| ③ 创建 Library | DevEco Studio 或 devecocli | 选 Static Library(HAR) |
| ④ 完善配置 | oh-package.json5 + 三件套 | LICENSE / readme / changelog 缺一不可 |
| ⑤ 构建 HAR | Build → Make Module | 用 release 模式,防源码泄露 |
| ⑥ 发布审核 | ohpm publish | name+version 永久占用 |
2. DevEcoCode 开发主线(自然语言驱动)
本篇的实战部分展示了用 DevEcoCode 开发三方库的独特优势:
- 需求即代码:把校验规则、ArkTS 严格模式约束、单测要求用自然语言描述清楚,DevEcoCode 就能生成结构规范的完整工程(桶文件入口、正则集中管理、纯静态方法、注释示例)。
- 约束内建:DevEcoCode 天然遵守 ArkTS 严格模式(如禁用正则字面量、禁用
any/as),生成的代码无需额外整改即可通过编译和审核。 - 对话式打磨:从初版精简配置到补齐
keywords/repository/tags,再到推送前的合规检查,都可以通过对话让 DevEcoCode 协助完成。
3. 两个值得记住的工程实践
- 桶文件入口(barrel):
Index.ets统一 re-export,对外屏蔽内部路径,后续重构不影响使用方。 - 正则集中管理:
RegexKit用static readonly+new RegExp()暴露,既符合 ArkTS 严格模式,又便于复用和维护。
三方库是鸿蒙生态的基础设施。如果你在项目中封装了通用的工具函数、UI 组件或业务 SDK,不妨按这篇的流程发布出去——既方便自己复用,也能为社区做贡献。
参考文献
- DevEco Studio 工具概览:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-tools-overview
- DevEcoCode:鸿蒙专属AI智能体:https://atomgit.com/openharmony-sig/deveco-code
- @deveco/deveco-cli · npm:https://www.npmjs.com/package/@deveco/deveco-cli
- HarmonyOS 7新特性:https://developer.huawei.com/consumer/cn/features/?ha_source=51cto&ha_sourceId=70000008
- HarmonyOS AI开发提效工具:DevEco Code & DevEco CLI:https://developer.huawei.com/consumer/cn/forum/topic/0202216647056043902?ha_source=51cto&ha_sourceId=70000008
- 社区干货合集:一帖看全,高效查阅 https://developer.huawei.com/consumer/cn/forum/topic/0201215860119833282?ha_source=51cto&ha_sourceId=70000008