【发布时间】:2015-06-09 22:34:16
【问题描述】:
我有一个使用 TypeScript 构建的库。我想在 TypeScript 和 JavaScript Node 项目中都包含这个库。这样做的一般策略是什么?我应该编译并拥有两个版本还是应该使用其他策略?
【问题讨论】:
标签: javascript node.js typescript
我有一个使用 TypeScript 构建的库。我想在 TypeScript 和 JavaScript Node 项目中都包含这个库。这样做的一般策略是什么?我应该编译并拥有两个版本还是应该使用其他策略?
【问题讨论】:
标签: javascript node.js typescript
我想在 TypeScript 和 JavaScript Node 项目中都包含这个库。这样做的一般策略是什么?
编译如下得到js输出:
--module commonjs --outDir ./dist这应该使您的项目可以被 JS 项目使用。要使其可供 TS 项目使用,您需要生成一个声明文件。这可以使用https://github.com/SitePen/dts-generator 来完成,详情请参阅用法:https://github.com/SitePen/dts-generator#usage
注意:有关于删除 dts-generator 依赖项的讨论:https://github.com/Microsoft/TypeScript/issues/2338
【讨论】:
在大多数情况下,我看到您有一个 /dist/ 文件夹,其中已编译的 JavaScript 所在的位置。
通常还有一个像 yourfilename.min.js 这样的缩小版本 - 其余的要么在外面,要么在 /src/ 文件夹中,所以外面你只剩下 license/readme.md、package.json 可能还有文件对于 Grunt/Gulp(据我所知,如果您使用任务运行程序,请包含一个 Grunt/Gulp 文件用于编译打字稿并在之后缩小 .js 文件,这被认为是礼貌的)
【讨论】:
如果您想在 TypeScript 项目中使用它时保留 TypeScript 的优势,那么您显然必须公开代码的 TypeScript 版本,以便 TypeScript 编译器可以看到您的界面的 TypeScript 声明。
但是,如果您希望人们能够在纯 Javascript 项目(不将 TypeScript 编译成 JS)中使用您的库,那么您必须提供一个具有纯 Javascript 界面并且代码已经存在的版本被编译成纯JS。
因此,如果您想要这两个优势,那么您必须提供两个不同的版本。纯 JS 版本显然可以只是 TypeScript 的编译版本(编译成纯 JS)。
【讨论】: