在一个 Typescript 项目中使用另一个项目的最佳实践是什么?
嗨,我目前有一个(核心)项目,其中包含我希望能够在其他(样本)项目中重用的组件,这两个项目都使用打字稿。
我的第一个方法是将这个核心库作为我项目级别的子模块,如下所示:
sample
|--src/
|------file_using_core_ts
|--core
这会导致问题,因为我不能直接使用在core中声明的组件,因为这表明core在根文件夹之外,也就是src
所以我尝试测试将 core 移动到 src 内部,原则上这工作正常,我可以运行项目(yarn dev)并且一切看起来都很完美,除了它会产生 tsc 问题而且我不能做建造
在项目的简化中,它会是这样的:
sample
|--src/
|------core/
|----------src/
|-------------sample.ts
|-------------a.ts
|------file_using_core_ts
sample.ts使用a.ts,但没有以相对方式导入,而是使用src/a,这是有问题的,因为tsc认为路径指的是sample/src而不是sample/src/core/src.
简化示例
./src/core/src/sample.ts
Type error: Cannot find module 'src/a' or its corresponding type declarations.
> 5 | import a from 'src/a'
我无法更改核心导入以使用相对路径,我的选择可能是更改某些打字稿设置或更改模块的位置。
我试图从类型检查中排除
core
,在我放的示例项目tsconfig中
"exclude: [
"node_modules",
"src/core"
]
我尝试了“src/core/*.,/core 等的不同变体......但它们都不起作用,我知道在这种情况下即使你排除文件夹,tsc 也会被迫检查输入。
我想知道是否有更好的方法来实现这个或者是否有配置类型检查的方法,因为毕竟项目运行并且在运行yarn run dev时工作正常,这只是一个类型检查问题。
如果您对问题有更具描述性的标题,请在评论中提出建议,我很乐意更改它。
非常感谢
我认为你想要的而不是子模块是使核心成为私有(npm 或其他注册表)包并在你的项目中使用它。 或者看看
workspaces
的 package.json
配置。这允许您声明多个包并交叉引用它们。