如何在NodeJS中公开TypeScript模块

How to expose TypeScript modules in NodeJS?

本文关键字:TypeScript 模块 NodeJS      更新时间:2023-09-26

我有一个用TypeScript构建的库。我想在TypeScript和JavaScript Node项目中都包含这个库。总体策略是什么?我应该编译并拥有两个版本还是应该使用其他策略?

我想在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/文件夹中,所以在外部你只有许可证/自述文件。医学博士,包。可能还有Grunt/Gulp的文件(如果你使用taskrunner,包括一个Grunt/Gulp文件来编译typescript,然后缩小。js文件,就我所见,这是礼貌的)

如果你想在TypeScript项目中使用它时保留TypeScript的优势,那么你显然必须公开TypeScript版本的代码,这样TypeScript编译器才能看到你的接口的TypeScript声明。

但是,如果你希望人们能够在纯Javascript项目中使用你的库(不将TypeScript编译成JS),那么你必须提供一个具有纯Javascript接口的版本,并且代码已经被编译成纯JS。

所以,如果你想要这两个优点,那么你必须提供两个不同的版本。显然,纯JS版本只是TypeScript的编译版本(编译成纯JS)。