使用Typescript创建Webpack打包库

9
我正在尝试构建一个TypeScript组件库,该库将被另一个也基于TypeScript的库所使用。我们目前使用webpack来完成打包,ts-loader作为加载器来消耗TS文件。
我不确定如何为下面的示例库生成.d.ts文件。 TypeScript确实会构建.d.ts文件(使用declaration设置为true),但每个模块只有一个文件,而我需要一个可以供使用者使用的.d.ts文件。

https://github.com/raybooysen/typescript-webpack-example

所以我的问题是,有没有一个典型的例子来完成这个? TypeScript 的使用者是否可以正确地导入这些 .d.ts 文件? 目前似乎在网上很少有相关文档和示例,因此希望得到任何帮助。


你有考虑过使用grunt或gulp并使用tsc --declaration命令或后构建命令吗?如果你正在使用VS,这可能会很有用。 - Igor
我们使用 ts-loader 运行 ts 编译器,使用 tsconfig.json 文件,其中声明设置为 true。然而,这会为每个模块生成一个 d.ts 文件。如果这没问题的话,但感觉不太对,那么如何将其用于基于 TypeScript 的消费项目中呢? - Ray Booysen
@RayBooysen,你最终是如何解决的呢?知道你的最终解决方案会很有帮助。 - Yaroslav Yakovlev
@YaroslavYakovlev 抱歉,刚刚添加了答案。 - Ray Booysen
3个回答

2

1
这并不是 TypeScript 的开箱即用功能,但使用 dts-bundle 可以完成该任务。 - vitkon

1
我的问题是,是否有一个典型的例子来完成这个任务? TypeScript消费者是否有正确导入这些.d.ts文件的方法?
通常情况下,您不希望将bundle用作模块消费者。这是使用库作为最终网站构件的人的工作。这意味着您只需在节点模块部署的构件中将foo.ts/foo.js放在一起即可。这些可以像TypeScript编译器一样被消费。

https://basarat.gitbooks.io/typescript/content/docs/quick/nodejs.html


不确定您所说的“通常不希望将bundle用作模块消费者”的意思是什么。如果不使用bundle,我该使用什么?我无法证明将模块的原始源代码用作消费者是合理的,因为库可能具有我不想处理的依赖项。例如,库可能使用LESS / SASS文件,而我不想编译这些文件。 - Ray Booysen
所有这些 css 样式文件都应该成为最终消费者项目的一部分,他们可以选择如何捆绑它(单个文件或拆分等)。 - basarat
1
这不是我想表达的意思。如果我是一个库构建者,我可能会使用许多需要处理的技术,比如SASS。这不应该是库消费者的责任,因为他们不想承担拥有此处理的负担。这意味着库开发人员需要输出一些纯JS和CSS,而不是TS和SASS。 - Ray Booysen

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接