为了在多台机器之间获得一致的安装结果,Yarn 可能会需要比 package.json 文件中配置的依赖项更多的信息。它需要准确存储每一个依赖项的安装版本。因此在 Yarn 项目的根目录我们需要一个 yarn.lock 文件,这个 yarn.lock 文件是自动生成的。

当我们执行 yarn 命令或者添加依赖包命令后,Yarn 都会在项目根目录下自动生成一个 yarn.lock 文件。在使用 Yarn 安装、升级、删除依赖项目时,会自动更新到 yarn.lock 文件中。一般我们不会去手动编辑这个文件,因为很容易破坏这个文件。

示例:

例如我们安装了一些依赖包,那么 yarn.lock 文件内容类似所示格式:

copy-descriptor@^0.1.0:
  version "0.1.1"
  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=

core-util-is@~1.0.0:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=

create-ecdh@^4.0.0:
  version "4.0.3"
  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
  integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
  dependencies:
    bn.js "^4.1.0"
    elliptic "^6.0.0"

可以明显看到 yarn.lock 文件中的信息比 package.json 文件中详细了很多。

在实际项目中,yarn.lock 文件也很有用处,我们可以将 yarn.lock 提交到版本库中,其他成员就可以通过 yarn install 获取所有依赖包,这个可以保证大家安装的依赖是完全一致的,避免产生 bug


知否
221 声望177 粉丝

Skrike while the iron is hot.