包与入口
ElfUI 采用“用户单入口、内部继续分包”的结构。新项目只把 @elfui/core 声明为直接运行时依赖;链式组件、路由和构建插件仍按需安装。
入口选择
| 场景 | 安装 | 导入 |
|---|---|---|
| 新项目 / 组件库 | 运行时 @elfui/core;开发依赖 @elfui/vite-plugin | import { defineHtml, createApp } from "@elfui/core" |
| 路由 | @elfui/router | import { createRouter } from "@elfui/router" |
| 旧站嵌入 / 小 demo | @elfui/chain | import { ElfUI } from "@elfui/chain" |
| 只用响应式 | @elfui/reactivity | import { useRef } from "@elfui/reactivity" |
| 高级 runtime 封装 | @elfui/runtime | import { defineComponent } from "@elfui/runtime" |
| 创建 Vite 项目 | create-elfui | pnpm create elfui@beta my-app --install |
包职责
| 包 | 职责 |
|---|---|
@elfui/core | 唯一标准用户运行时入口,聚合稳定的宏、响应式和 runtime API |
@elfui/vite-plugin | Vite 宏组件编译插件 |
@elfui/router | Web Components 路由 |
@elfui/chain | 链式组件扩展包,包含 runtime compiler |
@elfui/reactivity | 响应式系统完整入口 |
@elfui/runtime | Custom Element、生命周期、内置组件和高级 helper |
@elfui/compiler | 编译器源码能力,给工具和扩展使用 |
体积口径
当前 beta 体积基线如下。真实应用 fixture 表示经过 tree-shaking 的公共 API 消费者;聚合 facade 刻意保留全部稳定导出,用于发布门禁。
| 目标 | gzip | Brotli | 说明 |
|---|---|---|---|
| 真实应用 fixture | 10.04 KB | 9.07 KB | 使用 Core 公共 API 并经过 tree-shaking |
@elfui/core 聚合 facade | 17.57 KB | 15.86 KB | 包含全部稳定 Core 导出,不代表一般应用体积 |
@elfui/runtime 聚合 facade | 15.25 KB | 13.83 KB | 包含全部稳定 Runtime 导出,不带 compiler |
@elfui/reactivity 聚合 facade | 5.17 KB | 4.71 KB | 完整独立响应式入口 |
边界
@elfui/core 不导出 createComponent()、ElementBuilder、compile() 或运行时字符串模板能力。需要链式 API 时,去“生态 / Chain 链式组件”。
编译器生成的渲染 helper 从 @elfui/core/internal 导入。这个子路径属于编译器与 Core 之间的版本化协议,不是业务代码 API;应用不应手写 internal 导入,也不需要直接声明 @elfui/runtime。
@elfui/router 是独立包;只有需要路由时才安装。完整生态见生态总览:Router、Extensions、UI Kit、Language Tools 和 Create ElfUI 都在各自仓库独立维护。
