如何屏蔽 Lerna 包的内部结构,使其他包无法导入它们?
How to shield the internals of a Lerna package, so other packages cannot import them?
我正在使用 Lerna monorepo。我经常看到一个包从另一个包的深处进行导入,例如:
import { SomeType } from "@schema/folder/folder/file.ts"
这是不可取的,因为有时我们需要在通过 index.d.ts
导出它们之前转换自动生成的类型。这有时会导致从包的深处导入错误的、未转换的类型。
我想以某种方式限制一个包向其他包公开的 files/folders,因此这样的导入是不可能的:
import { SomeType } from "@schema" // valid
import { SomeType2 } from "@schema/folder/folder/file.ts" // invalid
我有哪些选择?
我不确定我还能提供哪些其他信息,因为我对这些东西几乎没有经验。
当你使用eslint
时,你可以在包的eslint设置中添加一条no-restricted-imports
规则:
"no-restricted-imports": [
"error",
{
"patterns": ["@schema/folder/*"]
}
],
我正在使用 Lerna monorepo。我经常看到一个包从另一个包的深处进行导入,例如:
import { SomeType } from "@schema/folder/folder/file.ts"
这是不可取的,因为有时我们需要在通过 index.d.ts
导出它们之前转换自动生成的类型。这有时会导致从包的深处导入错误的、未转换的类型。
我想以某种方式限制一个包向其他包公开的 files/folders,因此这样的导入是不可能的:
import { SomeType } from "@schema" // valid
import { SomeType2 } from "@schema/folder/folder/file.ts" // invalid
我有哪些选择?
我不确定我还能提供哪些其他信息,因为我对这些东西几乎没有经验。
当你使用eslint
时,你可以在包的eslint设置中添加一条no-restricted-imports
规则:
"no-restricted-imports": [
"error",
{
"patterns": ["@schema/folder/*"]
}
],