Skip to content

依赖管理 3 原则 = 依赖是债务 ​

解决什么问题:依赖失控 = 维护灾难—— 依赖是债务,必须主动管理(最小化 + 锁定 + 更新)。

业务问题 ​

真实场景 ​

场景 1:依赖膨胀

- 5 年前的项目
- 引入 200+ 依赖
- 50% 已知漏洞
- 升级 1 个依赖 = 破坏 10 个其他依赖
- 难以维护

依赖 3 维 ​

Direct vs Transitive(直接 vs 传递)
  - 直接依赖:你写的
  - 传递依赖:你依赖的依赖
  
Semantic Versioning:
  - Major:不兼容
  - Minor:向后兼容
  - Patch:bug fix

依赖 3 原则 ​

1. 最小化
   - 只用必要的依赖
   - 评估替代(自己写 vs 引入)
   - 拒绝"可能用到"
   
2. 锁定
   - 精确版本
   - hash 校验
   - 可重现构建
   - lockfile 提交到 git
   
3. 更新策略
   - 主动更新(不要落后)
   - 自动 PR(Dependabot / Renovate)
   - 测试覆盖(兼容性)
   - 跟随上游弃用

SBOM(Software Bill of Materials) ​

记录所有依赖(含传递)
  - 安全审计
  - 合规(license)
  - 漏洞追踪
  - 标准化(SPDX / CycloneDX)

工程实践 ​

决策 1:何时引入新依赖 ​

判断:
  - 是否真的需要?
  - 自己实现 vs 引入的 ROI?
  - 依赖的维护活跃度?
  - 依赖的依赖(传递)的健康度?
  - 依赖的许可证?

决策 2:如何更新依赖 ​

策略:
  - 频繁更新(小步快跑)
  - 自动 PR(CI 自动测试)
  - 主要版本升级 = 单独 PR
  - 跟随上游弃用周期

反模式 vs 正模式 ​

反模式正模式
"用 ^ 就行"lockfile 精确版本
"等出问题再更新"主动更新
"自己写一个"评估社区方案
"测试在本机"CI 完整测试

与 L 层对位 ​

关键洞察 ​

  1. 依赖是债务——每个依赖都增加维护成本。
  2. 最小化是硬道理——拒绝"可能用到"。
  3. 锁定 + 自动更新——确定性与新鲜度兼得。
  4. SBOM 是审计基础——记录所有依赖。
  5. 与 Hyrum 定律同构——传递依赖也是"实际契约"。

从名家方法论与工程化思路中蒸馏出自己的工程体系。