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

如何构建依赖Yarn工作区其他包的独立程序包

TypeScript单体仓库单包部署的简洁方案

方法1:用@manypkg/cli一键导出可部署单包

这是最省心的方案,专门针对monorepo的单包导出场景,自动处理内部依赖替换:

  • 安装依赖:yarn add -D @manypkg/cli
  • 在项目根目录的package.json中添加导出配置:
    {
      "manypkg": {
        "exportMap": {
          "your-target-package": "./dist-deploy"
        }
      }
    }
    
  • 执行导出命令:yarn manypkg export your-target-package
    命令执行后,dist-deploy目录会包含目标包的构建产物,以及自动修正后的package.json——内部依赖的workspace:*会被替换为对应包的实际版本号,外部依赖保持原样。直接将这个目录作为独立包部署,执行npm i即可安装所有所需依赖。

方法2:基于现有流程优化脚本(无额外工具)

如果不想引入新工具,可以用轻量命令简化现有脚本逻辑:

  1. 先构建目标包及其依赖:
    tsc --build packages/your-target-package/tsconfig.json
    
  2. 复制目标包的构建产物到部署目录:
    cp -r packages/your-target-package/dist ./dist-deploy
    
  3. 用jq快速修正package.json的内部依赖(需提前安装jq):
    jq '.dependencies |= with_entries(if .value | startswith("workspace:") then .value = "1.0.0" else . end)' packages/your-target-package/package.json > ./dist-deploy/package.json
    
    把1.0.0替换为对应内部包的实际版本号即可。处理后的package.json保留所有外部依赖,内部依赖改为可通过npm安装的版本,直接部署dist-deploy目录即可。

方法3:基于TS Project References的本地依赖部署

如果内部包无需发布到npm,可直接复用构建后的产物:

  1. 执行tsc --build构建所有相关包的产物
  2. 将目标包和所有依赖的内部包的dist目录复制到同一个部署目录下,比如:
    deploy/
      your-target-package/
        dist/
        package.json
      internal-package-a/
        dist/
        package.json
    
  3. 修改目标包的package.json,将内部依赖改为相对路径:
    "@your-org/internal-package-a": "../internal-package-a"
    
    部署时直接在your-target-package目录下执行npm i,即可正常安装外部依赖,同时通过相对路径引用内部包的构建产物。

关键注意点

  • 确保所有内部包的package.json中,main、module、types字段正确指向构建产物的路径
  • 若内部包需通过npm安装,需提前将其发布到私有或公共npm源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:41:21