f48f1cce70
- 采用固定内边距策略,解决标签页悬停时的布局抖动问题 - 统一关闭按钮尺寸为14x14px,提升视觉一致性 - 优化活动标签和悬停状态的层级管理,确保视觉层次正确 - 增强视觉反馈,添加内嵌阴影效果改善用户体验 - 添加平滑颜色过渡动画(0.2秒),提升交互流畅度 - 支持玻璃拟态设计系统,实现现代化视觉风格 - 完善工具箱图标支持,确保标签页工具功能准确显示
2.9 KiB
2.9 KiB
kind, name, category, scope, source_files
| kind | name | category | scope | source_files | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| dependency_management | pnpm 单仓依赖管理(前后端双 package.json) | dependency_management |
|
|
系统概览
本仓库采用 pnpm 作为统一的包管理器,前后端各自维护独立的 package.json,通过根级 .pnpm-store/v11/ 共享全局缓存,实现跨子项目的依赖去重与快速安装。未使用 pnpm workspace 的 monorepo 模式,而是以“多 package.json + 共享 store”的方式组织。
关键文件与位置
- 后端依赖声明:
backend/package.json(Express、Sequelize、MySQL2、JWT、Axios、Zod、AWS S3 SDK、Winston、ioredis 等) - 前端依赖声明:
frontend/package.json(Vue3、Element Plus、Vite、Axios、vue-router 等) - 锁文件:
backend/pnpm-lock.yaml(lockfileVersion 9.0,记录精确版本与 integrity);frontend/pnpm-lock.yaml(存在但未在工具输出中展开) - 前端工作区配置:
frontend/pnpm-workspace.yaml(仅启用 esbuild 构建) - 全局缓存目录:
.pnpm-store/v11/(按哈希分片存储已安装包) - 部署文档约束:
DEPLOY.md明确固定 Node 镜像为node:22-alpine,并强调packageManager字段锁定 pnpm 版本
架构与约定
- 包管理器锁定:两个
package.json均声明packageManager: "pnpm@11.5.2"(前端附带 sha512 校验),确保 CI/本地安装使用相同 pnpm 版本。 - 版本策略:依赖统一使用
^语义化范围(如express ^4.21、axios ^1.7、element-plus ^2.3.14),由 pnpm-lock.yaml 固化实际解析到的具体版本与完整性校验值。 - 依赖隔离:前后端 node_modules 独立安装,不共享同一份
node_modules,避免运行时冲突;但通过.pnpm-store共享磁盘缓存,减少重复下载。 - 无私有源/代理配置:未发现
.npmrc、.pnpmrc或 registry 相关设置,默认使用 npm 官方源。 - 无 vendoring:未将第三方包直接提交到仓库,依赖完全通过 pnpm 从远端拉取。
开发者应遵循的规则
- 新增/升级依赖:仅在对应子项目(
backend/或frontend/)的package.json中修改,然后运行pnpm install生成/更新该子项目的pnpm-lock.yaml。 - 不要手动编辑 lock 文件:所有版本变更通过 pnpm 命令触发,保证 integrity 与依赖树一致性。
- 保持 packageManager 字段同步:若升级 pnpm 主版本,需同时更新前后端
package.json中的packageManager值。 - CI/容器环境:基于
node:22-alpine镜像,pnpm 版本由packageManager字段自动锁定,无需额外指定。 - 不使用 workspace 聚合脚本:当前未定义根级 scripts 来并行安装前后端,建议在各自目录内执行
pnpm install。