ts build有时无法正确构建ts模块

时间:2016-05-03 09:52:24

标签: typescript visual-studio-2015

我有一个带有一些打字稿的项目。有时,打字稿不能正确构建;它使用了错误的模块系统,将导出的成员分配给某个导出对象,而不是使用require.js'define

为了让它重新构建,我轻摇了项目设置的TS构建选项卡,并推出了正确的构建。

导致这种情况的原因是什么?我的猜测是csproj文件控制了构建,但我不确切知道如何。

我的csproj中的打字稿相关条目是

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <TypeScriptTarget>ES5</TypeScriptTarget>
    <TypeScriptJSXEmit>None</TypeScriptJSXEmit>
    <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    <TypeScriptNoImplicitAny>True</TypeScriptNoImplicitAny>
    <TypeScriptModuleKind>AMD</TypeScriptModuleKind>
    <TypeScriptRemoveComments>False</TypeScriptRemoveComments>
    <TypeScriptOutFile />
    <TypeScriptOutDir />
    <TypeScriptGeneratesDeclarations>False</TypeScriptGeneratesDeclarations>
    <TypeScriptNoEmitOnError>True</TypeScriptNoEmitOnError>
    <TypeScriptSourceMap>True</TypeScriptSourceMap>
    <TypeScriptMapRoot />
    <TypeScriptSourceRoot />
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

如何以另一种方式控制ts构建,而不是单击设置选项卡中的按钮和复选框,我应该具体改变什么才能让我的构建始终生成AMD风格的模块?

1 个答案:

答案 0 :(得分:1)

也许您正在将构建配置更改为发布模式,而不是为此设置的调试模式?或者你有其他工具试图编译你的TypeScript,并且没有遵循Visual Studio的项目文件约定,而是默认为标准设置?

我很想尝试将您的配置移动到tsconfig.json文件中,并将其从Visual Studio项目设置中删除。这应该使它非常明确(使用.json它将始终设置,无论你的构建设置如何,并且任何编译TS的工具都会理解它),并且作为一个好的副作用使它也独立于Visual Studio。 / p>

https://www.typescriptlang.org/docs/handbook/tsconfig.json.html有关于格式的指南。我希望它可能只是采用上面的现有设置并直接将它们转录为JSON。

要获得您正在寻找的特定AMD模块行为,您只需确保将'module': 'amd'包含在JSON的compilerOptions对象中。