概念定义
清单把依赖声明为范围——如“^1.2.0”——它能被许多具体版本满足。锁文件是这些范围一次解析后的产物:它列出每个包的确切版本、它拉入的子图以及其内容的哈希。安装器随后遵循锁文件而非重新解析,因此同一棵依赖树被安装到每台机器,而哈希让安装器能发现内容被改动的包。
为什么重要
没有锁文件,两个开发者可在同一天装上不同版本,CI 又可能装上另一个,“在我机器上能跑”于是成了版本问题。更糟的是,一个范围可能悄悄拉入新发布、已损坏或恶意的版本。固定版本并校验完整性哈希使安装可复现,并给供应链一组可扫描、可证明的固定构件。
工程实践
为应用提交锁文件,使每个环境安装一致,并在 CI 中用冻结的确定性模式从它安装。有意识地更新依赖并重新审查差异,因为一次升级也会改变传递依赖。绝不要手工编辑该文件;用包管理器重新生成。把它交给依赖扫描,对高保障流水线还要做来源检查,但应把它当作需要维护的快照而非永久的保证。