feat: 新增 package.json 及 lock 文件的依赖管理规范,包含依赖变更评审、禁止手动修改 lock 文件和版本号使用规范三项规则

This commit is contained in:
Lyda
2026-05-18 20:01:40 +08:00
parent b7ea72a8a9
commit bb9c8bde5b
+96
View File
@@ -0,0 +1,96 @@
# 基础代码规范 `[Json.Package]`
> - includes `package.json` `package-lock.json` `yarn.lock` `pnpm-lock.yaml`
下面是 package.json 及 lock 文件的依赖管理规范
## 依赖变更需经评审 `[Json.Package.DependencyChangeReview]`
> - severity `error`
- 禁止随意添加、删除、修改依赖
- 新增依赖需在 PR 描述中说明引入理由、使用场景及替代方案评估
- 升级依赖大版本需经团队评审,评估 Breaking Changes 影响
- 删除依赖前确认无其他模块引用
### Example: 依赖变更
#### Good: 有明确理由并评审通过
```json
// PR 描述中说明:
// 引入 lodash-es 用于高性能数组操作,
// 替代方案评估:手写工具函数可维护性差,同意引入
{
"dependencies": {
"lodash-es": "^4.17.21"
}
}
```
#### Bad: 随意添加未评审依赖
```json
// 无说明直接提交
{
"dependencies": {
"some-random-lib": "^1.0.0"
}
}
```
## lock 文件禁止手动修改 `[Json.Package.NoManualLockEdit]`
> - severity `error`
- 禁止直接手动编辑 lock 文件(package-lock.json / yarn.lock / pnpm-lock.yaml
- lock 文件只能通过包管理器命令(npm/yarn/pnpm install/add/remove/update)自动生成
- PR 中 lock 文件变更需与 package.json 变更对应,禁止出现不一致情况
### Example: lock 文件变更
#### Good: 通过命令自动生成
```bash
# 正确方式:使用包管理器命令
pnpm add lodash-es
# 或
pnpm remove unused-lib
```
#### Bad: 手动编辑 lock 文件
```yaml
# 手动修改 pnpm-lock.yaml 中的 checksum 或版本号
```
## 依赖版本号使用 caret(^) 或波浪号(~) `[Json.Package.DependencyVersion]`
- 生产依赖(dependencies)使用 `^` 允许小版本和补丁版本更新
- 开发依赖(devDependencies)可使用 `~` 锁定小版本
- 禁止锁定精确版本(无符号或 `=`),除非存在特殊兼容性要求
### Example: 版本号规范
#### Good: 使用 ^ 或 ~
```json
{
"dependencies": {
"vue": "^3.3.0"
},
"devDependencies": {
"eslint": "~8.50.0"
}
}
```
#### Bad: 锁定精确版本无说明
```json
{
"dependencies": {
"vue": "3.3.4"
}
}
```