前端 Vue yarn.lock文件:详解和使用指南

yarn.lock文件:详解和使用指南

https://www.python100.com/html/38KF796X6BHM.html

一、什么是yarn.lock文件

yarn.lock文件是一个产生于Yarn 0.22及以后版本的文件,它是一个自动生成的锁文件,记录了当前项目的依赖关系,并确保每个依赖的版本都是稳定的,这样可以保证软件包安装的重现性和可靠性,避免不必要的依赖冲突和版本更新造成的问题。

二、yarn.lock文件的作用

在一个JavaScript项目中,通常会依赖很多的npm模块,而这些模块中可能存在依赖关系,以及不同版本的模块可能会有冲突。yarn.lock文件记录了所有模块的确切版本号和依赖关系,它的作用就是为了锁定这些模块的版本,以确保在不同的环境中,都可以得到相同的依赖版本。

如果没有yarn.lock文件,随着npm模块的更新、升级或者删除,依赖版本将变得不可预测,即使使用相同的命令下载依赖,可能也会得到不同的版本,这会导致程序的运行出现异常,而且解决依赖问题也会变得非常困难。

三、yarn.lock文件的使用

1. 创建yarn.lock文件

yarn.lock文件默认是不存在的,使用yarn install或yarn add命令时,yarn会自动生成yarn.lock文件,并且锁定所有的依赖包.

 
// 安装依赖,并生成yarn.lock文件
yarn add react
yarn install

2. 更新yarn.lock文件

运行yarn add或yarn upgrade命令会自动更新yarn.lock文件,如果我们想独立更新某个包的版本,可以直接手动修改yarn.lock文件,然后再运行yarn install来更新依赖

// 升级某个包的版本
yarn upgrade [email protected]

3. 解决依赖冲突

yarn.lock文件中的锁定版本,会自动解决依赖关系,避免了可能出现的依赖冲突。在同一台机器中,不同的项目可以使用不同的锁定文件,这样依赖关系会被保证,而且减少提交到代码库中的冗余文件的数量。

4. 共享yarn.lock文件

在团队协作开发时,如果每个人都使用npm install或yarn install来下载依赖,不能确保每个人都会使用相同的依赖版本,可能导致代码构建出现问题,解决这个问题最好的方式是将yarn.lock文件提交到代码仓库中,所有成员都使用同一个yarn.lock文件来下载依赖


五、yarn.lock文件的示例代码

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
yarn.lock 文件用于跟踪项目依赖的具体版本,以确保其他开发人员在运行 yarn install 时安装相同版本的依赖,从而保持项目环境的一致性。

core-js-compat@^3.0.0:
  version "3.14.0"
  resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5"
  integrity sha1-tXTavykYRoHVsWNXvTPRBN89KaU=
  dependencies:
    browserslist "^4.16.6"
    semver "7.0.0"

1.5.1. Identifier(s)

第一行的 core-js-compat@^3.0.0 是依赖的 identifier。和 package.json 里对应的包名和版本区间, 用 @ 连接。这边的标题里带了 (s), 是因为多个 Identifier 最终可能都指向同一个版本 (具体例子可以看下文 ### dependencies 里给出的例子)
1.5.2. version

第二行 version 是实际安装的版本。通常是满足版本区间里的一个版本, 比如上一行 identifier 里版本区间是 ^3.0.0, 这里实际安装的是 3.14.0, 符合要求。但是为什么要说是 “通常” 呢, 因为有例外, 在后文 ### resolutions 部分会讲到。
1.5.3. resolved

第三行 resolved 的是一个链接, 是下载这个包的地址。这个 url 里的域名部分跟项目里配置的 .npmrc 或你本地的 npm 配置的 registry 有关。
1.5.4. integrity

第四行 integrity 是对 resolved 下载下来的文件进行完整性校验。如果出现 diff, 说明同一个下载链接对应的文件被修改过。
1.5.5. dependencies

第五行 dependencies 是这个包自己的依赖。如这里依赖的 browserslist "^4.16.6", 你想看下实际安装的哪个版本, 就可以把它拼成 Identifierbrowserslist@^4.16.6", 以此为关键字在 yarn.lock 中搜索, 就能找到对应的 “块” 了。
链接:https://blog.csdn.net/wan212000/article/details/125302217

"@achrinza/node-ipc@^9.2.5":
"integrity" "sha512-/EvNkqB4HNxPWCZASmgrjqG8gIdPOolD67LGASvGMp/FY5ne0rbvpYg5o9x8RmgjAl8KdmNQ4YlV1et9DYiW8g=="
  "resolved" "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.7.tgz"
  "version" "9.2.7"
 dependencies:
    "@node-ipc/js-queue" "2.0.3"
    "event-pubsub" "4.3.0"
    "js-message" "1.0.7"

...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章