为了在多台机器之间获得一致的安装结果,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
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。