如何屏蔽 Lerna 包的内部结构,使其他包无法导入它们?

发布于 2025-01-10 02:36:02 字数 540 浏览 0 评论 0原文

我正在使用 Lerna monorepo。我经常看到一个包从另一个包的深处进行导入,例如:

import { SomeType } from "@schema/folder/folder/file.ts"

这是不可取的,因为有时我们需要在通过 index.d.ts 导出自动生成的类型之前对其进行转换。这有时会导致从包深处导入错误的、未转换的类型。

我想以某种方式限制一个包向其他包公开的文件/文件夹,因此这样的导入是不可能的:

import { SomeType } from "@schema" // valid
import { SomeType2 } from "@schema/folder/folder/file.ts" // invalid

我的选择是什么?

我不确定我还能提供什么其他信息,因为我对这些东西几乎没有经验。

I am working with a Lerna monorepo. I often see one package make imports from deep inside another package, for example:

import { SomeType } from "@schema/folder/folder/file.ts"

This is undesirable, because sometimes we need to transform auto-generated types before exporting them via index.d.ts. This sometimes results in the wrong, non-transformed type being imported from deep inside the package.

I would like to somehow constrain the files/folders that one package exposes to the others, so such imports would not be possible:

import { SomeType } from "@schema" // valid
import { SomeType2 } from "@schema/folder/folder/file.ts" // invalid

What are my options?

I am not sure what other info I can provide since I have little to no experience with this stuff.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缺⑴份安定 2025-01-17 02:36:02

当您使用 eslint 时,您可以将 no-restricted-imports 规则添加到包的 eslint 设置中:

    "no-restricted-imports": [
      "error",
      {
        "patterns": ["@schema/folder/*"]
      }
    ],

When you use eslint, you can add a no-restricted-imports rule to the eslint settings of the package:

    "no-restricted-imports": [
      "error",
      {
        "patterns": ["@schema/folder/*"]
      }
    ],
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文