【问题标题】:How to generate JavaScript bundle via npm TypeScript compiler如何通过 npm TypeScript 编译器生成 JavaScript 包
【发布时间】:2015-07-27 14:25:43
【问题描述】:

有什么方法可以将 TypeScript 源文件编译成单个 JavaScript 包文件

我们在 node.js 上构建工具,TypeScript 编译由

var ts = require('typescript');
...
var program = ts.createProgram(this.getAllInputFileNames(), this.typeScriptOptions, host);
var output = program.emit();

目前,typeScriptOptions 是:

{ target: 1, module: 2 }

我试图将out 添加到typeScriptOptions 中,所以它是

{ target: 1, module: 2, out: 'bundle.js' }

但是运气不好,编译器还是会生成很多.js文件……

需要什么选项来强制 TypeScript 编译器将所有输入的 .ts 文件编译成单个文件?

编辑:

使用上述选项,编译器会生成大量.js 文件,如上所述。还创建了bundle.js,但它是空文件

【问题讨论】:

  • 你没有 .ts 文件,它基本上引用了其他文件吗?如果是这样,您可以只构建该 .ts 文件而忘记其他文件。
  • 它没有帮助,它仍然会生成单个 .js 文件。关键是out选项是否正确...

标签: javascript node.js typescript bundle


【解决方案1】:

tsc 是一个将 TypeScript 代码编译成 JavaScript 的编译器/转译器,仅此而已。当然,它在生成的输出方面有一些选择,但本质上它的工作是创建输出 JavaScript。

你用它做什么取决于你。

我对捆绑的建议是使用browserify 来捆绑您的代码。

简而言之,运行它指向您输出的 JavaScript 主文件并提供一个输出包文件,它会根据依赖关系以适当的顺序创建一个包含所有 JavaScript 的单个包文件。

【讨论】:

  • TypeScript 确实有一个编译器选项 (out) 可以将所有输出捆绑到一个文件中。通过 API 调用时,它似乎不适用于操作。
  • 明白了,我提出了一个不同的选择来达到预期的结果,因为有很多人不喜欢使用--out ref:github.com/TypeStrong/atom-typescript/blob/master/docs/out.md
  • 感谢 browserify 作为解决此问题的另一种选择。我仍在寻找tsc 编译器的解决方案,因为它是它的特性,也许是最简单的解决方案......
  • 好的。有些人说--out 不好。但是我们肯定需要在生产中使用捆绑包。您在上面提供的链接建议应该由某些构建工具创建捆绑包(正如您所说)。但是当我们有tsc 编译器并且捆绑肯定与编译有关时,为什么还要有另一个工具来创建bundle.js?此外,tsc 仍有选项--out,但不起作用。这只不过是 TSC 1.5 中的回归错误。
  • 反对这样做的理由是划分。做一件事并把它做好,所以tsc 编译并让其他工具将 Humpty Dumpty 放在一个包中。
猜你喜欢
  • 1970-01-01
  • 2017-06-30
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 2020-06-02
  • 2018-05-26
相关资源
最近更新 更多