返回

Yarn Classic 版本查找指南:如何准确获知已安装包版本?

javascript

使用 Yarn Classic 准确查找已安装包版本:权威指南

作为一名经验丰富的程序员,我经常使用 Yarn 来管理我的项目依赖项。在最近的一次项目中,我遇到了一个令人困惑的问题:已安装包的版本似乎发生了变化,即使我没有运行任何更新命令。这让我想知道:如何使用 Yarn Classic 准确地查找已安装包的版本?

问题概述:Yarn Lock 文件的迷思

Yarn Classic 使用一个名为 yarn.lock 的文件来记录已安装包的版本。然而,我发现即使只更新 package.json 文件中的依赖项版本,但不运行 installupgrade 命令,yarn.lock 文件中的版本仍然保持不变。这导致 node_modules 文件夹中安装的包版本更新,而 yarn.lock 文件却显示旧版本。

解决方法:使用 yarn install --immutable

为了解决这个问题,我发现了 yarn install --immutable 命令。该命令强制 Yarn Classic 仅安装 yarn.lock 文件中指定的版本,覆盖任何已更新的版本。

步骤详解:

  1. 检查 yarn.lock 文件: 确认 yarn.lock 文件中记录的版本。
  2. 运行 yarn install --immutable 强制 Yarn Classic 安装 yarn.lock 文件中的版本。
  3. 检查 node_modules 文件夹: 验证已安装正确的包版本。
  4. 检查依赖项树(可选): 使用 yarn why 命令检查依赖项树,了解特定版本的安装原因。

示例:

以下示例演示如何使用 yarn install --immutable

# 查看 yarn.lock 文件
cat yarn.lock

# 更新 package.json 文件中的依赖项版本(不运行 install 或 upgrade)

# 再次查看 yarn.lock 文件
cat yarn.lock

# 运行 yarn install --immutable
yarn install --immutable

# 检查 node_modules 文件夹
ls node_modules/@babel/core

# 检查依赖项树(可选)
yarn why @babel/core

结论:

通过遵循这些步骤,你可以使用 Yarn Classic 准确地查找已安装包的版本。这有助于避免混淆并确保你的项目使用正确的依赖项版本。

常见问题解答:

  1. 为什么 yarn.lock 文件有时会出现旧版本? Yarn Classic 可能会在依赖项更新时自动更新 yarn.lock 文件。
  2. yarn install --immutable 命令会影响所有依赖项吗? 否,它只影响已更新的依赖项。
  3. yarn why 命令有什么用? 它显示依赖项安装位置以及为什么使用特定版本。
  4. 是否推荐使用 Yarn Classic? Yarn Classic 不再积极维护,建议升级到 Yarn 最新版本。
  5. 如何防止依赖项自动更新?package.json 文件中设置 resolutions 字段。