Files
dashboard/.qoder/repowiki/knowledge/zh/pnpm 单仓依赖管理(前后端双 package.json)/pnpm 单仓依赖管理(前后端双 package.json).md
T
eafonyang f48f1cce70 docs(tabs): 更新标签页视图组件设计与交互细节
- 采用固定内边距策略,解决标签页悬停时的布局抖动问题
- 统一关闭按钮尺寸为14x14px,提升视觉一致性
- 优化活动标签和悬停状态的层级管理,确保视觉层次正确
- 增强视觉反馈,添加内嵌阴影效果改善用户体验
- 添加平滑颜色过渡动画(0.2秒),提升交互流畅度
- 支持玻璃拟态设计系统,实现现代化视觉风格
- 完善工具箱图标支持,确保标签页工具功能准确显示
2026-07-15 09:58:56 +08:00

39 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
kind: dependency_management
name: pnpm 单仓依赖管理(前后端双 package.json
category: dependency_management
scope:
- '**'
source_files:
- backend/package.json
- frontend/package.json
- backend/pnpm-lock.yaml
- frontend/pnpm-lock.yaml
- frontend/pnpm-workspace.yaml
- .pnpm-store/v11/index.db
---
## 系统概览
本仓库采用 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 从远端拉取。
## 开发者应遵循的规则
1. **新增/升级依赖**:仅在对应子项目(`backend/``frontend/`)的 `package.json` 中修改,然后运行 `pnpm install` 生成/更新该子项目的 `pnpm-lock.yaml`
2. **不要手动编辑 lock 文件**:所有版本变更通过 pnpm 命令触发,保证 integrity 与依赖树一致性。
3. **保持 packageManager 字段同步**:若升级 pnpm 主版本,需同时更新前后端 `package.json` 中的 `packageManager` 值。
4. **CI/容器环境**:基于 `node:22-alpine` 镜像,pnpm 版本由 `packageManager` 字段自动锁定,无需额外指定。
5. **不使用 workspace 聚合脚本**:当前未定义根级 scripts 来并行安装前后端,建议在各自目录内执行 `pnpm install`