【发布时间】:2019-08-14 13:33:09
【问题描述】:
我找不到使用 webpack 生成 d.ts 和 d.ts.map 文件的方法。 babel-loader 只生成 js 和 js.map 文件。我还需要 d.ts 和 d.ts.map 文件(我可以使用tsc 命令生成),如下图所示:
这是一个包含所有设置的最小 repo:https://github.com/stavalfi/lerna-yarn-workspaces-example
更多详情
我搬到了 Lerna + yarn。我的一个包是core(将在其他包中使用),它是用 TS 和 JS 编写的。
我正在使用 webpack 4,babel-loader 8 用于 ts-to-js。
其他包正在尝试查找我的 core 包的类型定义和实现,但我只能使用 webpack 生成 index.js 和 index.js.map:
output: {
path: distPath,
filename: 'index.js',
},
{
"extends": "../tsconfig.settings.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"declarationDir": "dist",
"rootDir": "src",
"outDir": "dist"
}
}
- 当我使用
tsc(没有 webpack)进行编译时,一切正常,如上图所示。
我的策略错了吗?我该怎么办?
我尝试了很多生成 d.ts 文件的插件,但它们都不起作用,也无法创建 d.ts.map 文件。
我已经尝试过:typescript-declaration-webpack-plugin、npm-dts-webpack-plugin、dts-bundle-webpack、@ahrakio/witty-webpack-declaration-files。 (它们在 core 的 package.json 中列出,因此您可以克隆和使用它。
【问题讨论】:
-
据我了解(阅读大约 10 分钟)babel 并没有真正编译你的 tsc,它只是将它全部删除为纯 js?所以它不会为你吐出类型定义吗?似乎你必须让 webpack 使用 ts-loader 或其他东西,然后吐出你的 js 文件以被 babel 包含。 (希望更熟悉的人可以更确定地回答您的问题!)
-
你没看错。我不想搬到
ts-loader,因为我需要所有包代码的 babel。我还编辑了问题以使其更清楚。
标签: javascript typescript webpack babeljs