gpt4 book ai didi

javascript - 如何使用相对路径生成单个 *.d.ts 或多个

转载 作者:行者123 更新时间:2023-12-05 04:00:35 28 4
gpt4 key购买 nike

问题

[它只感染 typescript 库创建者]

如果代码库包含绝对路径(通过配置 tsconfig.json 和 webpack),那么 typescript 编译器将生成所有具有相同绝对路径的 d.ts 文件,因为我的 lib消费者不能对他们做任何事情。


解决方法

我看到的每个图书馆都在做以下事情之一:

  1. 手动创建自己的 single-file.d.ts 文件
  2. 在他们的代码库中使用相对路径,因此输出的 d.ts 文件也包含相对路径。

显然,这两种选择都很糟糕。


我想到的其他解决方案

  1. 创建单个 d.ts 文件(不会有导入)。

我找不到一个可用的库。

  1. 不确定是否可行:在运行 ts-loader 之前,我们需要运行一个神奇的 babel-plugin,通过查看 webpack.config 文件中的 webpack-resolve-module 部分,将每个绝对路径转换为相对路径。<

我现在的状态

我创建了一个生成带有绝对路径的损坏的 d.ts 文件的库:

https://github.com/stavalfi/lerna-yarn-workspaces-example/tree/master/packages/x-core

索引.ts:

import { z, x } from 'shalom'     // problem
export default function awesomeFn(y: number): x {
return z(1)
}

export { z, x } from './shalom' . // not a problem

生成的 index.d.ts:

import { x } from './shalom';     /// GOOD - becuase I used relative
export default function awesomeFn(y: number): x;
export { z, x } from 'shalom'; /// BAD - because I used absolute
//# sourceMappingURL=index.d.ts.map .

问题

有没有不停止使用绝对路径或手动创建我自己的 single.d.ts 文件的解决方案/解决方法?

最佳答案

如果任何 typescript 库创建者仍然有这个问题,我为 babel-plugin-module-resolver 创建了一个 Webpack 加载器,它将绝对路径转换为相对路径: https://github.com/stavalfi/babel-plugin-module-resolver-loader

它还解决了*.d.ts 文件的绝对路径问题,将它们转换为相对路径。


您可能想要订阅/阅读此线程以获取其他解决方法: https://github.com/Microsoft/TypeScript/issues/15479

关于javascript - 如何使用相对路径生成单个 *.d.ts 或多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091331/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com