本项目由多个包组成:
- common:各分包通用公共工具函数。
- compiler:小程序源码编译工具。
- components:内置小程序标准组件。
- container:原生容器层,为小程序提供 API。
- jdimina:webview sdk,为 webview 组件提供调用协议。
- render:渲染层,负责 UI 展示与消息处理。
- server:网络请求代理服务器, 提供给 web 端网络请求代理,用以解决跨域问题。
- service:逻辑层(JavaScript 运行时、worker 线程、消息通道)。
建议使用 Node.js 22+ 和 pnpm 7+。仓库已配置 Volta Node.js 22.22.3;如果使用 Volta,可直接在 fe/ 目录执行 pnpm 命令。
# 进入前端工作区
cd fe
# 安装依赖
pnpm install# 编译 example/ 目录下的所有小程序
pnpm compile
# 忽略本地编译缓存,强制重新编译 example/ 目录下的所有小程序
pnpm compile --force
# 构建(开发环境,不压缩)
pnpm build:dev
# 构建(生产环境,压缩)
pnpm build
# 预览生产构建
pnpm preview
# Web开发
pnpm dev
# 原生容器调试
pnpm dev:native
# 运行测试
pnpm test
# 生成小程序包
# 注意:需要 shared/jsapp 目录存在
pnpm generate:app
# 生成SDK包
# 注意:需要先执行构建命令
pnpm generate:sdk编译 example/ 目录下的所有小程序,并将产物输出到 packages/container/public。
默认情况下,命令会读取 packages/container/public/compile-cache.json,跳过未发生变化的小程序以提升编译速度。如需忽略本地缓存并重新编译全部示例小程序,可以执行:
pnpm compile --force也支持简写参数:
pnpm compile -f将编译好的小程序打包并复制到仓库根目录的 shared/jsapp 中。
注意事项:
- 运行前必须确保
shared/jsapp目录已存在,否则命令将终止 - 会自动递增小程序的版本号
- 生成的资源包括
config.json配置文件和[appId].zip代码包
将构建好的 SDK 打包并复制到仓库根目录的 shared/jssdk 中。
注意事项:
- 运行前必须先执行构建命令
pnpm build或pnpm build:dev - 会自动递增 SDK 的版本号
- 生成的资源包括
config.json配置文件和main.zipSDK 包
JSSDK 直接依赖 vConsole,并随 pageFrame 静态同步打包;只有检测到 vConsole 启用标记时才会初始化。pageFrame 会在 render 初始化前检查 URL 参数,Web 容器会通过 pageFrame URL 参数默认启用;三端 SDK 的调试位开启后也会追加同一个 URL 参数。
各端触发条件:
- Web 容器:加载 pageFrame 时总是追加
?vconsole=1 - Android:
Dimina.DiminaConfig.Builder().setDebugMode(true) - iOS:Debug 构建,或
DMPAppConfig.isDebugMode = true - Harmony:debug HAP,或
DMPAppConfig.isDebugMode = true
注意事项:
- vConsole 随 pageFrame 静态同步打包,只有启用标记存在时才会初始化
- Web 容器默认追加启用标记;三端 native 由各自 debug 位控制是否追加启用标记
请参考编译工具使用说明。