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

Mic*_*urz 5 javascript npm lerna es6-modules monorepo

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

import { SomeType } from "@schema/folder/folder/file.ts"
Run Code Online (Sandbox Code Playgroud)

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

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

import { SomeType } from "@schema" // valid
import { SomeType2 } from "@schema/folder/folder/file.ts" // invalid
Run Code Online (Sandbox Code Playgroud)

我有什么选择?

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

Jon*_*han 0

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

    "no-restricted-imports": [
      "error",
      {
        "patterns": ["@schema/folder/*"]
      }
    ],
Run Code Online (Sandbox Code Playgroud)