gpt4 book ai didi

typescript 在保存时编译为单个文件

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:13 24 4
gpt4 key购买 nike

我正在使用 TypeScript 0.8.3 并尝试获取 compile on save去工作。

我的设置略有不同,但它应该确实有效。请记住,它在我构建项目时工作正常,只是在保存时没有:

显然是第一件事:工具 > 选项 > 文本编辑器 > TypeScript > 项目 > 保存时编译设置为“自动编译属于项目的 TypeScript 文件”

然后在我的 .csproj 文件中

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>true</TypeScriptSourceMap>
<TypeScriptIncludeComments>true</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
<TypeScriptModuleKind>AMD</TypeScriptModuleKind>
<TypeScriptOutFile>application.js</TypeScriptOutFile>
</PropertyGroup>

<!-- this imports the code below from Microsoft.Typescript.targets -->
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" />

然后我更改了 Microsoft.TypeScript.targets 如下:

<Target Name="CompileTypeScript">
<Message Text="Compiling TypeScript files" />
<Message Text="Creating response file typescriptcompiler.input" />
<WriteLinesToFile
File="typescriptcompiler.input"
Lines="&quot;C:\MyProject\MyProject.Web\Scripts\_references.ts&quot;" <!-- recursively gets individual file paths referenced therein -->
Overwrite="true"
Encoding="Unicode"/>

<Message Text="Executing tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Exec Command="tsc $(TypeScriptBuildConfigurations) @typescriptcompiler.input" />
<Delete Files="typescriptcompiler.input"/>
</Target>

但我仍然需要重建项目以生成我的单个 application.js。保存单个文件不起作用。

注意:我不得不更改 Microsoft.Typescript.targets 以绕过 tsc 在尝试一次编译太多文件时使用的 WScript 库中的缓冲区错误。基本上,解决方法是写入文件然后传递给编译器。

知道为什么它不在保存时重新编译吗?

Microsoft.Typescript.targets 中有这一行,但它似乎没有做任何事情我尝试删除这两个条件,因此它始终为真,并且在保存时仍然没有编译。这是要做什么? :

<TypeScriptCompileOnSaveEnabled Condition="'$(TypeScriptEnableCompileOnSave)' != 'false' and '$(TypeScriptOutFile)' == ''">true</TypeScriptCompileOnSaveEnabled>

最佳答案

您可以解决 TypeScript IDE 集成的当前限制,强制 IDE 在保存某些文件或特定文件时调用您的构建目标。

一步一步:

  1. 在 Visual Studio/Solution Explorer 中选择一个 .ts 文件,保存时应触发一个操作;

  2. 单击属性面板 (F4);

  3. “自定义工具” 属性设置为“**MSBuild:***NameOfYourMSBuildTarget*;

  4. 对于这个例子,我们可以使用现有的 CompileTypeScript 目标,定义在文件 Microsoft.TypeScript.targets 中,只要将这个文件导入到项目文件;

  5. 因此该属性的值将为 MSBuild:CompileTypeScript,如下图所示:

enter image description here

在这个例子中,我只在文件 _references.ts 中定义了这个属性,也就是你的问题中提到的那个。但是您可以根据需要在任何文件中指定自定义工具。

我只是建议您避免在多个文件中指定相同的自定义工具,因为这将是多余的并且会减慢您的 TypeScript 编译过程。

之后,每次保存此文件时,都会触发自定义工具属性中指定的操作。

无论您在 Tools/Options/Text Editor/TypeScript 中的 TypeScript 编译器设置如何,并且独立于 WebEssentials,此设置都会起作用。

希望对你有帮助!

关于 typescript 在保存时编译为单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com