我找不到使用webpack生成d.ts和d.ts.map文件的方法.babel loader只生成js和js. map 文件.我还需要d.ts和d.ts.map文件(我可以使用tsc命令生成),如图所示:

enter image description here

下面是一个包含所有设置的最小回购:https://github.com/stavalfi/lerna-yarn-workspaces-example

更多细节

我搬到了勒纳+Yarn 公司.我的一个包是core(将在其他包中使用),它是用TS和JS编写的.

我正在使用webpack 4,babel loader 8用于ts到js.

其他软件包试图找到我的core软件包的类型定义和实现,但我只能用webpack生成index.jsindex.js.map:

output: {
    path: distPath,
    filename: 'index.js',
  },
{
  "extends": "../tsconfig.settings.json",
  "compilerOptions": {
    "declaration": true,
    "declarationMap": true,
    "declarationDir": "dist",
    "rootDir": "src",
    "outDir": "dist"
  }
}
  • 当我用tsc(没有网页包)编译时,一切都很好,如上图所示.

我的策略错了吗?我该怎么办?


我try 过很多生成d.ts文件的插件,但它们不起作用,也不能创建d.ts.map个文件.

我已经试过了:typescript-declaration-webpack-pluginnpm-dts-webpack-plugindts-bundle-webpack@ahrakio/witty-webpack-declaration-files.(它们列在core的package.json中,因此您可以克隆并使用它).

推荐答案

babel-loader之前跑ts-loader就可以了.

只需在配置中指定需要的声明文件即可.


如果您使用的是绝对路径,那么输出的d.ts文件也将包含绝对路径,这些绝对路径是无用的,并将导致typescript编译错误.

为了解决这个问题,我编写了一个插件,将绝对路径转换为相对路径:

Typescript相关问答推荐

为什么AB和CD这两种类型在TypScript中可以相互分配?

Typescript如何从字符串中提取多个文本

类型脚本:类型是通用的,只能索引以供阅读.(2862)"

为什么缩小封闭内部不适用于属性对象,但适用于声明的变量?

使用带有RxJS主题的服务在Angular中的组件之间传递数据

数组文字中对象的从键开始枚举

如何正确地对类型脚本泛型进行限制

在动态对话框中使用STEP组件实现布线

使用Redux Saga操作通道对操作进行排序不起作用

在打印脚本中使用泛型扩展抽象类

Typescript 类型守卫一个类泛型?

专用路由组件不能从挂钩推断类型

声明遵循映射类型的接口

如何解决&Quot;类型不可分配给TypeScrip IF语句中的类型&Quot;?

TS不能自己推断函数返回类型

我可以使用JsDocs来澄清Typescript实用程序类型吗?

是否使用类型将方法动态添加到类?

定义一个只允许来自另一个类型的特定字符串文字的类型的最佳方式

从泛型对象数组构造映射类型

TypeScript是否不知道其他函数内部的类型判断?