目前,我的建设过程是:
- 使用ES6模块语法编写大量类型脚本文件
- 生成一个index.ts,它从一个点重新导出所有模块
- 编译到CommonJS +系统
- 输出描述符/键入文件
这会导致index.js文件重新导出所有内部文件,而开发人员无需了解它,以及大量镜像文件结构的d.ts文件。
现在这个工作,但如果我采取这种方法的浏览器,我需要webpack了所有的js或它将是一个http请求噩梦拉在所有的个人文件。目前,这个库将作为其他库的依赖项使用,所以它不是逻辑或任何东西的终点,它是一个模块/库。
现在的主要问题是使用webpack我知道我可以加载TS并获取commonJS模块,但是我找不到任何方法来使用webpack生成d.ts
文件。那么,有没有一种方法可以让我在这种情况下使用webpack作为编译器/打包器,并有一个输出my-lib.js
和my-lib.d.ts
,而不是当前的方法,它会产生很多单独的文件。
==关于用例的额外说明==
只是为了确保每个人都在同一页上,当我说这是一个可以重用的库时,我的意思是,这是一个可以通过npm或jspm加载的库,或者作为其他模块的模块依赖。
例如,让我们假设jquery不存在,我将创建它,但将其写入类型脚本,供其他开发人员在JS和TS中使用。现在,typescript输出js文件和d.ts文件,js文件将按照您的预期使用,但d.ts文件向其他typescript文件解释库中包含的类型。
因此,假设我已经在TS中开发了jquery,然后我想在npm/jspm/bower等上发布这个输出(无论是由webpack还是tsc创建的)。这样其他人就可以在他们自己的项目中重用这个库。
所以webpack通常被用来打包一个“应用程序”,如果你愿意的话,它包含逻辑和业务关注点,并直接作为一个入口点被消费到一个更大的关注点集合。在这个例子中,它将被用作库的编译和打包步骤,并将通过var myLib = require("my-lib");
或类似的方式使用。
1条答案
按热度按时间bkhjykvo1#
生成.d.ts文件与webpack无关。在webpack中,你可以使用ts-loader或者awesome-typescript-loader。它们都使用了tslog.json。您需要做的是在
tsconfig.json
中添加"declaration": true
。我也建议你看看typescript-library-starter。你会发现如何设置,包括UMD包和类型定义:)。