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

求助:Turborepo monorepo中Next.js应用的条件导出与包大小异常

Turborepo + Next.js Monorepo 问题求助

项目结构如下:

.
└── root
    ├── apps
    │   ├── first-app (next.js app)
    │   └── second-app (next.js app)
    ├── configs (ts, tsup)
    └── packages
        └── ui (react lib)

问题1:Next.js应用无法识别可构建包的mjs/cjs条件导出

重现步骤

# second-app构建会失败
pnpm build second-app...

预期行为

Next.js应用应能解析mjs/cjs条件导出

临时解决办法

修改产物扩展名改为js,具体操作如下:

  1. 修改./configs/tsup.config.base.ts:
// 替换为:
outExtension({ format }) {
  return {
    js: `.${format === "esm" ? "esm.js" : "cjs.js"}` // 此方式可行
  }
}
  1. 修改./packages/ui/package.json:
// 替换为:
"exports": {
  ".": {
    "import": "./.build/index.esm.js",
    "require": "./.build/index.cjs.js"
  }
},

问题2:包大小不一致

重现步骤

# 先完成上述修改确保构建正常

# first-app首次加载JS大小为92kb
pnpm build --filter first-app

# second-app首次加载JS大小为143kb
pnpm build --filter second-app...

预期行为

first-app和second-app均基于Next.js/MUI模板,仅second-app从ui包导入部分MUI/emotion代码,二者首次加载JS大小应相近,但实际相差约50kb。

临时解决办法

暂无,因对打包工具经验有限,暂未找到合适解决方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:45:40