3.1 KiB
3.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
这是一个前端工具库 monorepo,使用 pnpm workspace 管理,包含以下子包:
| 包名 | 路径 | 描述 |
|---|---|---|
@r-utils/common |
packages/common |
通用 JS/TS 工具库(不依赖框架) |
@r-utils/vue3 |
packages/vue3 |
Vue3 专用工具 |
@r-utils/uni-app |
packages/uni-app |
uni-app 专用工具 |
@r-utils/vue2 |
packages/vue2 |
Vue2 专用工具 |
常用命令
构建
# 构建所有包
pnpm build
# 构建单个包(在包目录内)
cd packages/common && pnpm build
@r-utils/common同时有webpack.config.js和rollup.config.js,当前build脚本使用 webpack;rollup 配置备用。
测试
# 在根目录运行所有测试
pnpm test
# 运行单个测试文件
npx jest packages/common/test/permission.test.ts
测试文件位于各包的 test/ 目录下,使用 Jest + Babel。
代码检查与格式化
# Lint(从根目录,仅检查 src 目录)
pnpm lint
# 格式化
pnpm format
ESLint 使用 v9 flat config(eslint.config.js),已整合 TypeScript 和 Prettier 规则。
Git 提交
# 使用 commitizen 提交(遵循 conventional commits 规范)
pnpm commit
注意:提交时 husky pre-commit 钩子会自动运行 lint-staged 和 jest 测试,commit-msg 钩子会用 commitlint 校验提交信息格式。
架构说明
Monorepo 结构
- 根
package.json定义 devDependencies(构建工具、ESLint、Jest 等),各子包在自身package.json中声明运行时依赖 @r-utils/uni-app通过workspace:^依赖@r-utils/common;其他包目前通过file:本地路径引用- 每个包均输出 ES 模块格式,入口为
dist/index.js,类型声明在dist/index.d.ts
构建工具
- 各包使用 webpack 5 + ts-loader 进行构建,输出 ES module(
experiments.outputModule: true) - TypeScript 配置:
target: esnext、strict: true、路径别名@指向src/
@r-utils/common 模块结构
src/
├── permission/ Permission 类:权限字符串格式校验(如 "module:action:resource")
├── timer/ Countdown(倒计时)、TimeoutTimer
├── printer/ ESC 打印工具,PrintUtil 继承自 JpPrinter(esc.js)
├── knock-test/ KnockTest:按顺序敲击/点击触发回调的状态机
└── time/ 时间工具函数
@r-utils/uni-app 主要模块
request/Request.ts:类 axios 的 uni.request 封装,支持请求/响应拦截器uni-helper.ts:uni-app 常用工具(scanCode、toPromise、rpxToPx、pathToBase64、Canvas 工具等)bluetooth-utils/、nfc/、printer/:蓝牙、NFC、打印机功能
@r-utils/vue3
vue-helper.ts:Vue class 处理工具(mergeClass、createCustomClassObj)、dispatch祖先组件事件
@r-utils/vue2
plugins/visibility.js:Vue2 mixin 插件,为组件提供onShow/onHide生命周期钩子