从Visual Studio 2017中的tsx文件隐藏派生的.js和.js.map

时间:2017-04-28 08:47:58

标签: visual-studio typescript csproj

在VS Code中,您可以执行以下操作:

{
    "files.exclude": {
        "**/*.js.map": {"when": "$(basename).js"},
        "**/*.js": {"when": "$(basename).ts"},
        "**/**/*.js": {"when": "$(basename).tsx"}
    }
}

在存在等效的*.js.map文件时隐藏*.js个文件,并在存在等效的*.js*.ts文件时隐藏任何*.tsx个文件。

默认情况下,*.js.map个文件嵌套在*.js个文件下,*.js个文件嵌套在*.ts个文件下但不在*.tsx个文件下。

我试图在csproj中使用MSBuild复制此内容,但我没有太多运气,我尝试过:

<Project Sdk="Microsoft.NET.Sdk.Web">
    <ItemGroup>
        <None Include="**/*.js" Condition="Exists('$(RootDir)$(RecursiveDir)\$(FileName).tsx)')" />
    </ItemGroup>
</Project>

但它似乎没有什么区别。有没有办法让VS隐藏从*.js个文件生成的*.js.map*.tsx个文件?

2 个答案:

答案 0 :(得分:1)

正如评论中提到的,我已经找到了解决这个问题的方法,所以没有完全回答这个问题。我已经配置了我的构建工具(webpack)来编译typescript文件而不产生中间输出(即.js或.jsx)

我有example repo证明了如何实现这一目标。

答案 1 :(得分:0)

这可以通过msbuild定义来完成,但我遇到了麻烦,因为项目系统尝试删除/添加这些定义。但是,将它放在项目上方或目录层次结构旁边的Directory.Build.targets文件中应该可以实现您想要的目标:

<Project>
  <ItemGroup>
    <_TsxFile Include="**\*.tsx" />
    <Content Update="@(_TsxFile->'%(RelativeDir)%(Filename).js')" DependentUpon="%(Filename).tsx" />
  </ItemGroup>
</Project>

在VS中生成此结果:

enter image description here