我正在使用webpack和awesome-typescript-loader捆绑我的项目并创建.d.ts文件。我有这样的结构:
src
- main.ts
- types
- index.ts
- SomeType.ts
在main.ts中,我正在导出所有内容:
export * from './types';
export default ...
和types / index.ts如下:
export * from './SomeType.ts';
在构建项目时,types文件夹中的所有内容都丢失了,但是我希望创建.d.ts文件,以便可以将这些类型导入其他项目中。
我的tsconfig:
{
"compilerOptions": {
"removeComments": true,
"moduleResolution": "node",
"preserveConstEnums": true,
"declaration": true,
"sourceMap": true,
"outDir": "./dist/",
"noImplicitAny": true,
"module": "esnext",
"target": "es5",
"lib": ["es2018", "dom"]
},
"include": ["src/**/*"],
"awesomeTypescriptLoaderOptions": {
"reportFiles": ["src/**/*.{ts,tsx}"]
}
}
答案 0 :(得分:1)
在仅包含类型声明的tsc
文件中发出声明方面,awesome-typescript-loader的行为似乎与ts-loader和ts
不同。
给出一个文件types.ts
,仅包含类型export
export type MyType = "a"
并导入另一个模块index.ts
import { MyType } from "./types";
tsc
和ts-loader
都发出一个types.d.ts
文件,其中包含类型,但不包含awesome-typescript-loader。我无法在此告诉您确切的原因-我发现的唯一参考是,awesome-ts-loaders似乎tries to be more intelligent基于更复杂的依赖项解析方法,在这种情况下可能适得其反。如有疑问,我将假设tsc
具有正确的引用行为。
无论如何,更常见的是将仅具有类型声明的ts
文件重命名为d.ts
扩展名,因为不会发出任何代码输出。因此,您以question结尾,为什么tsc
不会将源目录中的d.ts文件复制到构建文件夹中。
在这种情况下,最简单的方法是通过手动构建步骤将所需的d.ts文件(用于公共库API或类似文件)手动复制到dist
。或者,您可以在Webpack中使用新的babel打字稿预设,并有一个单独的tsc
编译步骤,仅用于声明。