在线文档教程

5. yarn.lock

5. yarn.lock

为了获得跨机器的一致安装,Yarn需要比您在配置中的依赖更多的信息package.json。Yarn需要存储每个依赖项的安装版本。

为此,Yarn 在项目的根目录中使用一个文件yarn.lock。这些“锁文件”看起来像这样:

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 package-1@^1.0.0: version "1.0.3" resolved "https://registry.npmjs.org/package-1/-/package-1-1.0.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" package-2@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/package-2/-/package-2-2.0.1.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" dependencies: package-4 "^4.0.0" package-3@^3.0.0: version "3.1.9" resolved "https://registry.npmjs.org/package-3/-/package-3-3.1.9.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0" dependencies: package-4 "^4.5.0" package-4@^4.0.0, package-4@^4.5.0: version "4.6.3" resolved "https://registry.npmjs.org/package-4/-/package-4-2.6.3.tgz#a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"

这与Bundler或Cargo等其他软件包管理器中的锁文件相当。它与npm相似npm-shrinkwrap.json,但它不具有损耗性,并且可产生可重现的结果。

由Yarn管理

您的yarn.lock文件是自动生成的,应完全由Yarn处理。当您使用Yarn CLI添加/升级​​/删除依赖项时,它将自动更新您的yarn.lock文件。不要直接编辑这个文件,因为很容易破坏某些东西。

仅限当前包

在安装期间,Yarn只会使用顶层yarn.lock文件,并会忽略yarn.lock依赖项中存在的任何文件。顶层yarn.lock文件包含Yarn需要锁定整个依赖关系树中软件包版本的所有内容。

检查到源代码管理

所有yarn.lock文件都应该检入源代码控制(例如git或mercurial)。这允许Yarn在所有机器上安装相同的精确依赖关系树,无论它是您的同事的笔记本电脑还是CI服务器。

框架和库作者也应该检查yarn.lock源代码管理。不要担心发布yarn.lock文件,因为它不会影响库的用户。