# free-test-wk **Repository Path**: free_pan/free-test-wk ## Basic Information - **Project Name**: free-test-wk - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Simple UI WK > 基于 pnpm monorepo 的 Vue 3 企业级脚手架 — 内置 vxe-table/vxe-pc-ui 数据驱动方案、Tailwind CSS 样式体系、MSW 请求模拟、多环境构建、VitePress 文档站及完整的 Git 提交规范。 ## 项目概览 采用 **pnpm workspace** 组织多包结构,`apps/web` 为主应用,`packages/` 承载共享 UI 组件、工具函数和文档站。项目集成了现代前端工程化所需的完整工具链: - **样式**:Tailwind CSS v3 + PostCSS - **数据层**:vxe-pc-ui/vxe-table 数据驱动表单表格 + 图表 - **HTTP**:axios + @tanstack/vue-query(数据请求/缓存) - **Mock**:MSW(浏览器开发环境 + Vitest 测试双模拦截) - **构建**:开发/测试/生产三套环境变量,按 `--mode` 切换 - **代码质量**:ESLint + oxlint(双遍检查)+ oxfmt(格式化) - **提交流程**:cz-git 交互式提交 → husky pre-commit(lint-staged) → commit-msg(commitlint) - **国际化**:vue-i18n 11(集成 vxe-pc-ui 语言包) - **文档**:VitePress + vitepress-demo-plugin 可交互 Demo ## 架构 ``` simple-ui-wk/ ├── apps/ │ └── web/ # 主 Vue 3 单页应用 │ ├── .env.development # 开发环境变量 │ ├── .env.test # 测试环境变量 │ ├── .env.production # 生产环境变量 │ ├── src/ │ │ ├── main.ts # 应用入口(MSW + Pinia + Router + i18n) │ │ ├── App.vue # 根组件 │ │ ├── i18n.ts # vue-i18n(含 vxe-pc-ui 语言包) │ │ ├── router/index.ts # Vue Router(动态 import 懒加载) │ │ ├── stores/counter.ts # Pinia Composition API │ │ ├── views/ # 页面级组件 │ │ ├── components/ # 应用专有组件 │ │ │ └── __tests__/ # 组件单元测试 │ │ ├── assets/ # CSS(base.css + main.css)、图片 │ │ └── mocks/ # MSW 请求模拟 │ │ ├── handlers.ts # 共享请求处理器 │ │ ├── browser.ts # 浏览器集成(开发环境) │ │ └── node.ts # Node.js 集成(测试环境) │ ├── public/ │ │ └── mockServiceWorker.js # MSW Service Worker 脚本 │ ├── tailwind.config.js # Tailwind CSS v3 配置 │ ├── postcss.config.mjs # PostCSS(tailwindcss + autoprefixer) │ ├── vite.config.ts # Vite 配置(动态插件) │ ├── vitest.config.ts # Vitest 配置(含 MSW setup) │ ├── vitest.setup.ts # MSW 测试启动/重置/关闭 │ └── index.html # HTML 入口 ├── packages/ │ ├── ui/ # @simple-ui/ui — 共享 UI 组件 │ │ └── src/ │ │ ├── index.ts # 统一导出入口 │ │ ├── helper/vxeHelper.ts # vxe-pc-ui 全局注册 │ │ └── components/ │ │ ├── HelloWorld.vue │ │ ├── TheWelcome.vue │ │ ├── WelcomeItem.vue │ │ ├── JsonForm.vue # vxe-form 封装 │ │ ├── JsonTable.vue # vxe-grid 封装 │ │ └── icons/ # SVG 图标组件 │ ├── shared/ # @simple-ui/shared — 共享类型与工具 │ │ └── src/ │ │ ├── index.ts # 导出入口 │ │ └── utils/ │ │ └── commBO.ts # 通用业务对象类型(PageBO / BizResp / BizPageResp) │ └── docs/ # @simple-ui/docs — VitePress 文档站点 │ ├── articles/ # 文档内容(按分类子目录组织) │ │ ├── demo/ # Demo 展示页 │ │ ├── demos/ # Demo 源码(hello-world / counter / toast-demo) │ │ ├── guide/ # 指南 │ │ ├── ui/ # UI 组件文档 │ │ └── shared/ # Shared 包文档 │ ├── .vitepress/ │ │ ├── config.ts # VitePress 配置(含 vitepress-demo-plugin) │ │ └── theme/ │ │ ├── index.ts # 主题入口 │ │ ├── custom.css # Tailwind 指令 │ │ └── css.d.ts # TS 声明 │ ├── tailwind.config.js │ └── postcss.config.mjs ├── .commitlintrc.cjs # commitlint + cz-git 共享配置 ├── .lintstagedrc.cjs # lint-staged 预提交任务 ├── .husky/ │ ├── pre-commit # npx lint-staged │ └── commit-msg # npx commitlint --edit $1 ├── .oxlintrc.json # oxlint correctness 规则 ├── .oxfmtrc.json # oxfmt(semi: false, singleQuote: true) ├── eslint.config.ts # ESLint flat config ├── pnpm-workspace.yaml # 工作空间定义 ├── tsconfig.base.json # 共享 TypeScript 配置 └── playwright.config.ts # Playwright E2E ``` ### 包依赖关系 ``` root(编排脚本 + 共享运行时依赖 + 代码检查/格式化/Git 工具) ├── apps/web ───────┬── @simple-ui/ui, @simple-ui/shared (workspace:*) │ └── vue / pinia / vue-router / vue-i18n │ vxe-pc-ui / vxe-table / echarts / vue-echarts │ tailwindcss / postcss / autoprefixer │ @tanstack/vue-query / @vueuse/core / axios / big.js ├── packages/ui(peerDep: vue)— 源文件导入,vxe-pc-ui/vxe-table 全局注册 ├── packages/shared(无运行时依赖)— PageBO / BizResp / BizPageResp 类型 └── packages/docs— vitepress / vitepress-demo-plugin / tailwindcss ``` ## 技术栈 | 领域 | 技术 | | ------------- | ---------------------------------------------------------- | | **框架** | Vue 3(`