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

如何从yarn zero install依赖中构建可独立部署的单包产物?

Yarn Workspaces + Zero Install 单包独立部署方案

以下两种方案均无侵入性,不需要修改现有项目配置:

方案1:使用Yarn原生focus命令(推荐)

Yarn 2+ 内置了workspace focus能力,专门用于单个子包的依赖安装:

  • 先在CI环境拉取完整monorepo代码(需包含根目录.yarn缓存目录、.yarnrc.yml、yarn.lock等配置文件)
  • 执行单包依赖安装命令,假设目标包的package.json中name为@your-project/server,路径为packages/server:
    yarn workspaces focus @your-project/server --production
    
    该命令只会为目标包安装生产环境依赖,自动生成对应子包目录下的node_modules,不会处理其他workspace的内容
  • 正常执行目标包的构建命令,比如yarn workspace @your-project/server build
  • 最后将packages/server目录下的构建产物、package.json、node_modules打包后即可直接部署

方案2:完全抽离独立打包(适合需要脱离monorepo结构部署的场景)

如果需要生成完全不依赖原monorepo的部署包,可以按以下步骤操作:

  • 从根目录package.json、yarn.lock中提取目标包的所有依赖(包含monorepo内的本地依赖)
  • 新建临时目录,将目标包的所有源码、package.json复制到临时目录
  • 如果依赖了monorepo内的其他本地包,将这些本地包的源码也按原workspace路径复制到临时目录
  • 在临时目录新增极简.yarnrc.yml配置,指定nodeLinker: node-modules,再复制根目录的yarn.lock到临时目录
  • 在临时目录执行yarn install --production生成独立的node_modules
  • 剔除临时目录内的配置文件、冗余源码后打包部署

常见优化点

  • 如果部署包体积过大,可以执行yarn autoclean --force清理node_modules中的冗余文件
  • 依赖monorepo本地包的场景,focus命令会自动将本地包的构建产物打包进依赖,无需手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:24:00