【问题标题】:How to expose TypeScript modules in NodeJS?如何在 NodeJS 中公开 TypeScript 模块?
【发布时间】:2015-06-09 22:34:16
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js typescript


    【解决方案1】:

    我想在 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

    【讨论】:

      【解决方案2】:

      在大多数情况下,我看到您有一个 /dist/ 文件夹,其中已编译的 JavaScript 所在的位置。

      通常还有一个像 yourfilename.min.js 这样的缩小版本 - 其余的要么在外面,要么在 /src/ 文件夹中,所以外面你只剩下 license/readme.md、package.json 可能还有文件对于 Grunt/Gulp(据我所知,如果您使用任务运行程序,请包含一个 Grunt/Gulp 文件用于编译打字稿并在之后缩小 .js 文件,这被认为是礼貌的)

      【讨论】:

        【解决方案3】:

        如果您想在 TypeScript 项目中使用它时保留 TypeScript 的优势,那么您显然必须公开代码的 TypeScript 版本,以便 TypeScript 编译器可以看到您的界面的 TypeScript 声明。

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

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

        【讨论】:

          猜你喜欢
          • 2013-03-08
          • 2012-10-09
          • 2020-08-15
          • 2021-11-28
          • 2014-04-04
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          • 2021-04-12
          相关资源
          最近更新 更多