【问题标题】:Monorepo - How to import from within and from without the package?Monorepo - 如何从包内和包外导入?
【发布时间】:2022-12-05 06:39:01
【问题描述】:

哟。我有一个问题,没有明确的答案,但我想看看社区的意见。

假设我们有一个 Monorepo,其结构如下:

|--packageA
|----components
|------componentA.tsx
|------componentB
|----utils
|------UtilA.ts
|------UtilB.ts
|----index.ts
|--packageB
|----components
|------componentA.tsx
|------componentB
|----utils
|------UtilA.ts
|------UtilB.ts
|----index.ts

当我们在packageA 并且我们从packageB 导入时,我们有 TS_Paths 并且我们执行以下操作:

import { UtilB } from "@org/packageB"

现在,问题来了。当我们想从同一个包内导入时,无论是 A 还是 B,我都不会使用绝对路径,以避免循环依赖和项目图冲突等问题,并允许每一个可能的导入路径疯狂。话虽这么说,在我目前的组织中,这种模式是在同一个项目中使用的。

//componentA in packagaA
import {UtilsA} from "@org/packageA/utils"

有人可以详细解释利弊吗?

【问题讨论】:

    标签: typescript import monorepo tsconfig-paths


    【解决方案1】:

    你的tsconfig.json 文件在哪里?你的package.json 文件在哪里? node_modules/ 在哪里?

    听起来你的组织假装它有很多包并允许循环依赖,这会使你的构建复杂化,模块解析混乱。

    这里有 codesmell,因为你的导入应该看起来像

    import {UtilsA} from "@packageA/utils"
    

    除非你的团队打算将包裹命名为@org

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 2019-04-23
      • 2018-09-27
      • 2013-12-28
      • 1970-01-01
      • 2012-02-27
      • 2016-03-10
      • 1970-01-01
      相关资源
      最近更新 更多