【问题标题】:tsc out creating empty outfiletsc out 创建空的输出文件
【发布时间】:2015-12-08 11:40:33
【问题描述】:

我有一个名为 test.ts 的简单 hello world 文件,其内容如下:

export class Hello {
  constructor() {
    console.log("hello world!");
  }
}

当我运行命令tsc test.ts --module amd --out bla.js 时,会创建一个具有正确内容的test.js 文件,但也会创建一个空的bla.js 文件。

我希望test.ts 的内容和任何依赖项都被编译成bla.js。是什么导致了这种行为?

【问题讨论】:

标签: javascript typescript tsc


【解决方案1】:

--out 参数告诉tsc

连接并将输出发送到单个文件。

...但是您正在定义一个模块。模块并不意味着在连接的文件中。所以tsc 正在生成一个包含所有非模块代码的连接文件(你没有,所以bla.js 是空的)和一个包含test 模块的模块文件(test.js)。

您可以通过在命令行中添加第二个.ts 文件来证明这一点,该文件没有定义模块。您将在bla.js 中找到该代码的转译版本,在test.js 中找到您的模块。如果您添加另一个定义第二个模块的 .ts 文件,您会在另一个 .js 文件中找到它,其源名称为 .ts 文件。

例如,假设你有

  • Module1.ts 定义一个模块
  • Module2.ts 定义另一个模块
  • Stuff.ts 定义非模块的东西
  • MoreStuff.ts 定义更多非模块的东西

...你做到了:

tsc Module1.ts Module2.ts Stuff.ts MoreStuff.ts --out combine.js --module amd

你最终会得到:

  • Module1.js 包含为 Module1 转译的 JavaScript。
  • Module2.js 包含为 Module2 转译的 JavaScript。
  • combined.js 包含从 Stuff.tsMoreStuff.ts 转译的 JavaScript

【讨论】:

  • 谢谢,这解决了问题。这确实意味着我必须用/// <reference.../> 引用其他人,但这解决了问题。
  • @JamesMonger: ...或者不要将它们定义为模块,因为您将所有内容组合在一起。
  • 那么,如果我们使用模块,是否可以单独使用tsc 将文件连接成一个文件?或者,我们必须使用Webpack 之类的东西吗?
猜你喜欢
  • 2018-04-17
  • 2020-03-22
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多