You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Yarn 3.x中列出yarn.lock文件中的所有包版本?

解决Yarn v3+项目批量固定依赖版本及清理多版本问题的实操方案

一、统一package.json中的依赖版本格式

  1. 配置Yarn默认使用精确版本,避免后续新增依赖自动带^:
    在项目根目录新建或编辑.yarnrc.yml,添加:
    savePrefix: ""
    
  2. 将现有依赖的^x.x.x或latest替换为精确版本:
    若要升级到当前兼容的最新精确版本并同步更新package.json,执行:
    yarn up --exact "*"
    
    若要保留当前已安装的版本而非升级,可借助jq工具(需提前安装)批量提取yarn.lock中的精确版本替换package.json:
    # 更新生产依赖
    jq '.dependencies |= with_entries(.value = (try (input | .[] | select(.name == .key) | .version) catch .value))' package.json <(yarn list --json | jq -r '.data[] | {name: .name, version: .version}') > temp.json && mv temp.json package.json
    # 更新开发依赖
    jq '.devDependencies |= with_entries(.value = (try (input | .[] | select(.name == .key) | .version) catch .value))' package.json <(yarn list --json | jq -r '.data[] | {name: .name, version: .version}') > temp.json && mv temp.json package.json
    

二、清理单个包的多版本重复依赖

Yarn v3+自带的dedupe命令可自动合并兼容范围内的重复依赖:

  • 查看当前重复依赖情况:
    yarn dedupe --check
    
  • 强制合并到最高兼容版本(适合维护模式下保持稳定且相对新的版本):
    yarn dedupe --strategy highest
    
  • 若存在版本冲突无法自动合并,直接在package.json中添加resolutions字段强制指定版本:
    "resolutions": {
      "冲突包名": "你要固定的精确版本号"
    }
    
    执行yarn install后,所有依赖将统一使用指定版本。

三、验证并锁定版本

  1. 执行yarn install更新yarn.lock文件,确保所有依赖版本被精确锁定。
  2. 后续安装依赖时使用yarn install --frozen-lockfile,强制沿用已锁定的版本,防止意外更新。

内容的提问来源于stack exchange,提问作者Remy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:39:47