跳转到内容

XiHan UI 包依赖关系

XiHan UI 采用 monorepo 结构进行组织,包含多个子包,各子包之间有明确的依赖关系。下面详细说明各个包的功能和依赖关系。

包概览

包名描述依赖
xihan-ui主包,导出所有子包所有子包
@xihan-ui/utils工具函数无外部依赖
@xihan-ui/constants常量和类型定义utils
@xihan-ui/themes主题系统utils, constants
@xihan-ui/hooksVue 组合式函数utils, constants, themes
@xihan-ui/icons图标组件utils, constants
@xihan-ui/locales国际化资源utils, constants
@xihan-ui/directivesVue 自定义指令utils, constants
@xihan-ui/componentsUI 组件utils, constants, hooks, themes 等
@xihan-ui/pluginsVue 插件utils, constants, hooks, themes 等

详细依赖结构

1. @xihan-ui/utils (基础工具)

@xihan-ui/utils/
├── src/
│   ├── dom/        // DOM操作工具
│   ├── vue/        // Vue相关工具
│   ├── common/     // 通用工具函数
│   └── types/      // TypeScript类型定义

依赖: 无
被依赖: 所有其他包

2. @xihan-ui/constants (常量定义)

@xihan-ui/constants/
├── src/
│   ├── tokens.ts   // 注入令牌
│   ├── events.ts   // 事件常量
│   └── props.ts    // 公共Props定义

依赖: @xihan-ui/utils
被依赖: 大部分其他包

3. @xihan-ui/themes (主题系统)

@xihan-ui/themes/
├── src/
│   ├── default/    // 默认主题
│   ├── dark/       // 暗黑主题
│   └── tokens/     // 设计标记

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
被依赖:
- @xihan-ui/components
- @xihan-ui/hooks
- @xihan-ui/plugins

4. @xihan-ui/hooks (组合式函数)

@xihan-ui/hooks/
├── src/
│   ├── useNamespace.ts  // BEM命名空间
│   ├── useConfig.ts     // 全局配置
│   ├── useTheme.ts      // 主题钩子
│   └── useLocale.ts     // 国际化钩子

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
- @xihan-ui/themes
- @xihan-ui/locales
被依赖:
- @xihan-ui/components
- @xihan-ui/plugins

5. @xihan-ui/icons (图标系统)

@xihan-ui/icons/
├── src/
│   ├── components/  // 图标组件
│   ├── packs/       // 打包的图标集合
│   └── svg/         // SVG资源

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
被依赖:
- @xihan-ui/components

6. @xihan-ui/locales (国际化)

@xihan-ui/locales/
├── src/
│   ├── zh-CN/     // 中文语言包
│   └── en-US/     // 英文语言包

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
被依赖:
- @xihan-ui/hooks
- @xihan-ui/components
- @xihan-ui/plugins

7. @xihan-ui/directives (Vue 指令)

@xihan-ui/directives/
├── src/
│   ├── clickOutside/  // 点击外部指令
│   ├── resize/        // 调整大小指令
│   └── loading/       // 加载指令

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
被依赖:
- @xihan-ui/components

8. @xihan-ui/components (UI 组件)

@xihan-ui/components/
├── src/
│   ├── button/      // 按钮组件
│   ├── input/       // 输入框组件
│   ├── form/        // 表单组件
│   └── ...          // 其他组件

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
- @xihan-ui/hooks
- @xihan-ui/themes
- @xihan-ui/icons
- @xihan-ui/locales
- @xihan-ui/directives
被依赖:
- xihan-ui (主包)

9. @xihan-ui/plugins (Vue 插件)

@xihan-ui/plugins/
├── src/
│   ├── theme/      // 主题插件
│   ├── locale/     // 国际化插件
│   └── icons/      // 图标插件

依赖:
- @xihan-ui/utils
- @xihan-ui/constants
- @xihan-ui/hooks
- @xihan-ui/themes
- @xihan-ui/locales
- @xihan-ui/icons
被依赖:
- xihan-ui (主包)

10. xihan-ui (主包)

xihan-ui/
├── src/
│   ├── index.ts    // 主入口
│   ├── installer.ts // 安装器
│   └── resolvers/  // 自动导入解析器

依赖: 所有子包
被依赖: 无 (用户应用直接依赖)

依赖层级图

                      +---------------+
                      |   xihan-ui   |
                      +-------+-------+
                              |
          +------------------++-----------------+
          |                  |                  |
+---------v----------+ +-----v------+ +---------v--------+
| @xihan-ui/components| |@xihan-ui/plugins|  其他导出子包   |
+--------+------------+ +-----+------+ +-----------------+
         |                   |
         |                   |
+--------v---------+  +------v-----+  +--------+-------+
| @xihan-ui/hooks  |  |@xihan-ui/themes| |@xihan-ui/icons  |
+--------+---------+  +------+-----+  +--------+-------+
         |                   |                |
         |                   |                |
+--------v---------+  +------v-----+  +-------v-------+
|@xihan-ui/locales |  |@xihan-ui/directives|
+--------+---------+  +------+-----+
         |                   |
         |                   |
+--------v---------+  +------v-----+
|@xihan-ui/constants|  |             |
+--------+---------+  |             |
         |             |             |
         |             |             |
+--------v-------------v-------------v-----+
|           @xihan-ui/utils               |
+----------------------------------------+

构建流程

XiHan UI 使用 TurboRepo 进行任务编排,确保各个包按正确的依赖顺序进行构建。使用 Unbuild 作为构建工具,生成 ESM 和 CommonJS 格式的产物,并提供完整的 TypeScript 类型定义。

包导入路径

在应用中导入 XiHan UI 组件库时,可以使用以下路径:

js
// 导入主包
import XiHanUI from "xihan-ui";

// 导入特定组件
import { XhButton, XhInput } from "@xihan-ui/components";

// 导入工具函数
import { deepMerge } from "@xihan-ui/utils";

// 导入组合式函数
import { useTheme } from "@xihan-ui/hooks";

// 导入图标
import { XhIcon } from "@xihan-ui/icons";

Released under The MIT License.