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
文件,因为它不会影响库的用户。