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

TypeScript Monorepo跨包导入如何避免指定build路径?

解决方案

方法一:手动聚合导出(最简洁直接)

在ProjectA的src/index.ts里,把maths.ts的函数聚合到入口文件导出:

export function isEven(n: number): boolean {
  return n % 2 === 0
}

// 新增导出maths模块的内容
export { Add } from './maths'

之后ProjectB里就能统一从包名导入:

import { isEven, Add } from "@monorepo/utils"

方法二:配置package.json支持子路径导入(适合多模块场景)

如果不想把所有导出都堆到入口文件,可以修改ProjectA的package.json,通过exports字段定义子路径映射,同时配置类型识别:

{
  "name": "@monorepo/utils",
  "version": "1.0.0",
  "description": "The package containing some utility functions",
  "main": "./build/index.js",
  "type": "commonjs",
  "scripts": {
    "build": "tsc --build"
  },
  "exports": {
    ".": "./build/index.js",
    "./maths": "./build/maths.js"
  },
  "typesVersions": {
    "*": {
      "maths": ["./src/maths.ts"]
    }
  }
}

这样ProjectB就能按照源码结构的路径导入:

import { isEven } from "@monorepo/utils"
import { Add } from "@monorepo/utils/maths"

额外提示:确保TypeScript依赖解析正常

如果使用TypeScript项目引用(Project References),需要:

  • 在ProjectA的tsconfig.json中设置"composite": true
  • 在ProjectB的tsconfig.json里添加引用配置:
{
  "references": [{ "path": "../ProjectA" }]
}

这样构建时会自动处理依赖顺序,类型也能正确关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:40:14