构建与工具

锁定文件(lockfile)

锁定文件(lockfile)是一份自动生成的清单,它把你的项目装进来的每一段代码的确切版本都钉死——不只是你点名要的那些库,连那些库自己所需要的库也一并钉住。它存在的全部意义,就是让「安装」这一步每一次、在每台机器上都得出完全相同的结果。

它填的是这样一个缺口。你在清单文件里通常写得比较宽松,类似「给我 4 点几版的 lodash 都行」。这很方便,但也意味着两个人在不同的日子去安装,可能悄悄装出略有差异的代码。锁定文件则把答案冻结下来:它明确记下你实际装到的是 4.17.21、就是这一个、来自这个确切的源。

锁定文件不用你手写——你的包管理器(package manager)会自动生成并更新它。你要做的,只是把它和代码一起提交进仓库。这样队友、构建服务器、乃至未来的你,只用一条安装命令,拿到的就是一字不差、完全一致的环境,而不是一句含糊的「应该差不多」。

// package-lock.json (excerpt)
"node_modules/lodash": {
  "version": "4.17.21",
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
  "integrity": "sha512-v2kDEe57…"
}

不是「lodash 4 点几」,而是这个确切版本、来自这个确切地址——钉死了。

一定要提交它。锁定文件若没进仓库,就等于白做了——大家又得各自猜版本。

又称
lock filepackage-lock.jsonyarn.lockpnpm-lock.yamlcargo.lockpoetry.lock