今天我遇到了一个与库、.d.ts 文件和相对路径相关的复杂 Typescript 情况。
我们将 React 组件库(包括类型)发布到 npm。
我们的前端项目像任何其他 npm 包一样包含此库。
通常我们的前端项目在 tsconfig.json 中有选项“skipLibCheck: true”
我们的一个应用程序没有此标志(默认情况下此标志被禁用,老实说我不知道谁会想要这种行为)
问题是,标志不存在,我们收到了 ts-error:
这是一个公平的错误:我们库中的分布式文件试图从绝对路径导入某些内容
import { Foo } from 'absolutePath';
这一行在库本身中有意义,但在node_modules/bla/bla/bla 中没有意义
Ts 是对的:这是我们这里的绝对路径吗?
在 dist/ 文件夹中进行挖掘,我检查了一些生成的组件文件是否使用相对路径正确转换:
恐慌时刻:为什么一些转译的 .d.ts 文件使用绝对路径,而另一些则使用相对路径????
稍后在 GitHub 上发布的一些 Stack Overflow 帖子和问题、主题和讨论(我将跳过不起作用的内容)
我在构建时注意到了这个vite警告:
Export of «module» was reexported through «file» while both modules are dependencies of each other and will end up in different chunks by Rollup.
所以...循环依赖就是这样。
我解决了导入语句中的循环依赖关系,现在一切都很好。
如果您遇到 Ts 问题?转换库中的绝对路径语句而不是相对路径,
这会导致客户端应用程序出现 Ts 错误,这可能是由于源代码中的循环依赖造成的。
--
感谢您的阅读
我在 X 的原始帖子
以上是Ts 转译 npm 包中的绝对路径语句的详细内容。更多信息请关注PHP中文网其他相关文章!