TypeScript只发出一次样板代码

时间:2013-05-12 10:03:19

标签: visual-studio msbuild typescript

在对* .ts文件生成的代码进行一些更仔细的检查后,我发现如果扩展一个类,那么样板__extends函数会被复制多次,因为你扩展了很多次...这可能是因为我使用Web Essentials来编译TypeScript源代码,因此tsc不知道它只需要编写一次吗?

以下是项目构建文件中与TypeScript相关的设置:

<PropertyGroup>
  <TypeScriptTarget>ES5</TypeScriptTarget>
  <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
  <TypeScriptSourceMap>false</TypeScriptSourceMap>
  ...
</PropertyGroup>

我有一堆:

  <ItemGroup>
    <TypeScriptCompile Include="$(ProjectDir)src\Foo.ts" />
    <TypeScriptCompile Include="$(ProjectDir)src\Bar.ts" />
    <TypeScriptCompile Include="$(ProjectDir)src\Baz.ts" />
    ...
  </ItemGroup>

tsc有一个命令行选项,特别是--out用于生成单个文件而不是一堆文件,但是将<Out><TypeScriptOut>添加到属性组中似乎工作......

1 个答案:

答案 0 :(得分:1)

每个文件都会生成一次。这是因为编译器对每个文件运行一次,并且不知道将在另一个文件中定义相同的函数。

使用--out标志仅在输出文件的顶部插入此函数一次。但是,目前在Visual Studio中没有选项可以使用此标志。但是,您可以像Steve提到的那样手动编辑项目文件。

<Target Name="BeforeBuild">
    <Exec Command="&quot;$(PROGRAMFILES)\Microsoft SDKs\TypeScript\$(TypeScriptVersion)\tsc&quot; --out final.js @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
</Target>

来源:https://stackoverflow.com/a/15346708/390330