包边界
Lumal 按职责拆包,兼容层不能反向污染核心包。
依赖方向
@lumal/icons保持零运行时依赖,不依赖任何 UI 框架。@lumal/icons-vue依赖@lumal/icons,不能依赖@lumal/core。@lumal/core可以依赖@lumal/icons与@lumal/icons-vue。@lumal/vben-compat可以依赖@lumal/core。@lumal/core不能依赖@lumal/vben-compat。@lumal/charts独立可选包,不依赖@lumal/core;@lumal/core也不能依赖@lumal/charts。@lumal/datav独立驾驶舱可视化组件包,不依赖@lumal/core、@lumal/charts或@lumal/cockpit;上述包也不能反向依赖@lumal/datav。@lumal/cockpit可选驾驶舱编排包,可以依赖@lumal/core;@lumal/core不能反向依赖@lumal/cockpit。@lumal/cockpit不能依赖@lumal/charts,也不能依赖 ECharts、OpenLayers、Cesium、Mapbox、Leaflet 等可视化或地图运行时。@lumal/vite是独立构建辅助包,不依赖@lumal/core运行时。
初版约束
@lumal/core基于 Element Plus 组合后台框架能力,不从零重写基础 UI 控件。- Element Plus 必须保持为
@lumal/core的 peer dependency,不能放进普通 dependencies。 @lumal/core默认不引入多语言。@lumal/core默认不依赖 VXE。@lumal/core默认不依赖 ECharts / vue-echarts,图表能力由@lumal/charts单独承载。@lumal/charts必须把echarts、vue-echarts作为 peer dependency,不能放进普通 dependencies。@lumal/datav必须把vue、echarts作为 peer dependency,不能放进普通 dependencies;DataV 2.10.0 只作为 MIT 许可下的重构基准,版权声明维护在包内THIRD_PARTY_NOTICES.md,不得引入业务接口、状态码、权限码或字段映射。@lumal/cockpit只提供容器、布局运行时、组件注册、配置编辑和消息传递能力;不得内置地图引擎、图表引擎、业务模块、行业分类、固定标题/Logo/背景,也不得包含业务接口地址、状态码、权限码或字段映射。@lumal/cockpit必须把vue作为 peer dependency;runtime与designer保持独立构建入口,只读驾驶舱可只加载runtime。@lumal/icons必须能独立构建,源码不得出现 Vue SFC、Vue 类型或 Vue 运行时引用。@lumal/icons-vue必须把vue与@iconify/vue作为 peer dependency,纯 SVG 算法不得在该包内复制实现。@lumal/vite不强制安装自动导入、Devtools 或 viewport 转换插件。- 业务接口、业务路由、业务 store 不进入包源码。
apps/*只作为消费方验证,通过 workspace 包依赖使用@lumal/*,不直接 alias 到packages/*/src。packages/*的公开入口必须能通过exports、types、main、module指向dist产物。- 样式统一使用 SCSS,包级样式入口必须能通过 package
exports被消费方引入。
自动检查
发布前运行:
bash
pnpm release:boundaries这个脚本会检查包发布字段、依赖方向、Element Plus / ECharts peer dependency、core 中禁止默认引入的 i18n/VXE/ECharts 标识,以及示例应用是否绕过包名直连 packages/* 源码或测试内部文件。
完整构建后还需运行:
bash
pnpm release:artifacts该脚本检查九个发布包和 Admin 的必要产物、明确 vendor 分包,以及 Admin 单个 JavaScript 块不超过 500 KB。@lumal/icons-vue 需产出 ESM、CJS 和 icons-vue.css;@lumal/cockpit 需产出 ESM、CJS、cockpit.css 以及独立的 runtime、designer 入口;@lumal/datav 需产出 ESM、CJS 和 datav.css。
当前 Windows 开发环境直接执行项目声明的 pnpm 10.33.0;不要使用可能切换到其他 pnpm 版本的包装命令。