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

使用Yarn安装Vite React模板时,如何仅下载指定esbuild二进制文件?

问题描述

安装Vite React模板时Yarn出现卡顿,使用--verbose参数查看日志后,发现正在下载大量冗余的esbuild架构包,日志如下:

verbose 3.383394574 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.8.tgz".
verbose 3.412297881 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz".
verbose 3.4289958 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz".
verbose 3.438138307 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz".
verbose 3.442030601 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz".
verbose 3.449186704 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz".
verbose 3.461365038 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz".
verbose 3.471498568 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz".
verbose 35.782801854 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz".
verbose 40.800013747 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz".
verbose 51.831574917 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz".
verbose 59.994924433 Performing "GET" request to "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz".

请问是否可以仅下载linux-x64和linux-s390x版本的esbuild二进制文件?我的package.json配置如下:

{
  "name": "app",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "autoprefixer": "^10.4.16",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "tailwindcss": "^3.3.6",
    "wouter": "^2.12.1",
    "zustand": "^4.4.7"
  },
  "devDependencies": {
    "@types/react": "^18.2.37",
    "@types/react-dom": "^18.2.15",
    "@typescript-eslint/eslint-plugin": "^6.10.0",
    "@typescript-eslint/parser": "^6.10.0",
    "@vitejs/plugin-react": "^4.2.0",
    "eslint": "^8.53.0",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-react-refresh": "^0.4.4",
    "typescript": "^5.2.2",
    "vite": "^5.0.0"
  }
}

解决方案

当然可以仅下载指定的linux-x64和linux-s390x版本esbuild二进制包,以下是几种可行的实现方式:

方式一:环境变量+手动补充安装

esbuild会根据当前系统的环境变量自动匹配对应的架构包,如果你默认运行环境是linux-x64,可以先通过环境变量限定安装该架构,再手动补充安装linux-s390x包:

# 仅安装linux-x64架构的esbuild
ESBUILD_PLATFORM=linux ESBUILD_ARCH=x64 yarn install
# 手动添加linux-s390x版本
yarn add @esbuild/linux-s390x@0.19.8 --dev

方式二:通过package.json的resolutions强制锁定

在你的package.json中添加resolutions字段,将所有不需要的esbuild架构包映射到你需要的版本,仅保留目标架构:

{
  // 原有配置内容...
  "resolutions": {
    // 锁定所有esbuild相关包的版本为0.19.8
    "@esbuild/*": "0.19.8",
    // 将其他架构包全部指向linux-x64,仅保留需要的两个架构
    "@esbuild/android-arm": "@esbuild/linux-x64@0.19.8",
    "@esbuild/android-arm64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/android-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/darwin-arm64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/darwin-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/freebsd-arm64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/freebsd-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-arm": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-arm64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-ia32": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-loong64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-mips64el": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-ppc64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/linux-riscv64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/netbsd-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/openbsd-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/sunos-x64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/win32-arm64": "@esbuild/linux-x64@0.19.8",
    "@esbuild/win32-ia32": "@esbuild/linux-x64@0.19.8",
    "@esbuild/win32-x64": "@esbuild/linux-x64@0.19.8"
  }
}

添加完成后,重新执行yarn install即可,Yarn会按照resolutions的配置只下载指定的架构包。

方式三:选择性安装依赖

直接通过命令行指定仅安装需要的两个架构包,同时忽略可选依赖:

yarn install --ignore-optional @esbuild/linux-x64@0.19.8 @esbuild/linux-s390x@0.19.8

注意:这种方式可能会导致esbuild在运行时如果检测到非目标架构环境时出错,仅推荐在固定环境下使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:15:58