我有一个使用 TypeScript 的 Web 项目,它对编译的输出文件有一些相当复杂的要求。例如,我需要将一个目录中的所有 *.ts 文件编译为一个 .js 文件,并将另一目录中的所有 *.ts 文件编译为不同的 .js 文件。 (它比这更复杂,但你明白了。)
我已经能够使用 tsc.exe 命令行、使用输入文件等来完成此工作,但我希望能够使用 MSBuild .targets 文件 - 除其他外,使用 tsc.exe命令行在持续集成服务器上的支持似乎很差,谁知道它可以位于哪里,而且当然不可能在路径中。
根据这个答案here https://stackoverflow.com/questions/15651172/typescript-compile-to-single-file-on-save,看来我应该能够使用自定义构建目标来做到这一点。因此,我创建了 Microsoft.TypeScript.targets 的自定义版本,除了默认的“CompileTypeScript”目标之外,我还创建了第二个目标“PayboardApiV10”,因此相关部分如下所示:
<Target Name="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
<Message Text="Compiling TypeScript files normally" Importance="high"/>
<VsTsc
ToolPath="$(TscToolPath)"
ToolExe="$(TscToolExe)"
Configurations="$(TypeScriptBuildConfigurations)"
FullPathsToFiles="@(TypeScriptCompile)"
YieldDuringToolExecution="$(TscYieldDuringToolExecution)"
OutFile="$(TypeScriptOutFile)"
OutDir="$(TypeScriptOutDir)"
>
<Output TaskParameter="GeneratedJavascript" ItemName="GeneratedJavascript" />
</VsTsc>
</Target>
<Target Name="PayboardApiV10" Condition="'$(BuildingProject)' != 'false'">
<Message Text="Compiling TypeScript files for Payboard API v1.0" Importance="high" />
<VsTsc
ToolPath="$(TscToolPath)"
ToolExe="$(TscToolExe)"
Configurations="$(TypeScriptBuildConfigurations)"
FullPathsToFiles="@(TypeScriptCompile)"
YieldDuringToolExecution="$(TscYieldDuringToolExecution)"
OutFile="Payboard.js"
OutDir="$(ProjectDir)api\v1.0\"
>
<Output TaskParameter="GeneratedJavascript" ItemName="GeneratedJavascript" />
</VsTsc>
</Target>
然后我在项目配置中为我希望由“PayboardApiV10”构建目标获取的特定文件指定了“CustomTool”,如下所示:
我应该指出,我不知道我是否正确地完成了这一点。我似乎找不到任何有关它的文档,我能找到的唯一示例就是来自该文档之前的回答 https://stackoverflow.com/questions/15651172/typescript-compile-to-single-file-on-save。更重要的是,当我运行我的构建时,all我的项目中的 TS 文件陷入第一个构建目标中,包括我为自定义工具指定“MSBuild:PayboardApiV10”的目标。 “PayboardApiV10”工具似乎从未运行,即,我从未看到消息“为 Payboard API v1.0 编译 TypeScript 文件”。
那么两个问题:
(1) 有没有更好的方法来做我想做的事情?
(2)如果这通常是正确的方法,那么我做错了什么有什么想法吗?
您要去的方向是最佳方式(保存时)。在此期间您可以使用构建后事件 http://msdn.microsoft.com/en-us/library/ke5z92ks.aspx转换打字稿。右键单击您的项目并选择属性。选择“构建事件”,然后在“构建后”区域中您可以指定命令行参数以使用 tsc.exe。
按照您要去的方向(保存时编译),我认为项目文件可能在您想要编译的每个文件上缺少以下内容:
<TypeScriptCompile Include="app.ts" />
该配置也可能缺少环境设置。
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
</PropertyGroup>
有关这两种方法的更多信息,请访问此处TypeScript 维基页面 http://typescript.codeplex.com/wikipage?title=Compile-on-Save.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)