yarn-lock的坑

959 阅读1分钟
  • 升级依赖后,一定要同时提交 package.json 和 yarn.lock

yarn.lock 的作用?

锁定唯一版本

yarn.lock 信息?

antd@4.16.3:
  version "4.16.3"
  resolved "https://registry.npmjs.org/antd/-/antd-4.16.3.tgz#9836613eaeabb55a0bcd4423551df699d65f67a8"
  integrity sha512-goFcDw8MB9PKgb+fHjUEOwoseL5iuMNelzcdFJOJaG1LXPm9d/ZQhQWdYbzQf5l7v6bmvvvi91WNB1rDsuXh3w==
  dependencies:
    "@ant-design/colors" "^6.0.0"
    "@ant-design/icons" "^4.6.2"
    "@ant-design/react-slick" "~0.28.1"
    ...(省略)

Identifier(s)

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

version

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

resolved

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

integrity

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

dependencies

第五行dependencies是这个包自己的依赖。如这里依赖的"@ant-design/colors" "^6.0.0",你想看下实际安装的哪个版本,就可以把它拼成 Identifier@ant-design/colors" "^6.0.0",以此为关键字在 yarn.lock 中搜索,就能找到对应的“块”了。

yarn.lock 是如何生成的?

yarn.lock 是自动生成的,你不应该去手动的修改

依赖管理

比如我们的常规操作,都会自动更新 package.json 和 yarn.lock

  • 新增依赖:yarn add
  • 升级依赖:yarn upgrade