如何阻止Typescript编译器在Visual Studio 2017中生成JS和JS.MAP文件?

时间:2017-08-28 12:38:17

标签: visual-studio typescript

我的 Visual Studio 2017 ASP.NET 项目中的应用myapp有一些 typescript 文件。我使用 gulp 任务来生成JS文件,因此我不希望构建或语言服务创建这些 JS和JS.MAP 文件。

这就是我的TSCONFIG文件的样子:

{
  "compileOnSave": false,
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "module": "system",
    "types": [ "" ],
    "lib": [
      "es6",
      "dom"
    ]
  },
  "include": [
    "./myapp/**/*"
  ]
}

我尝试了以下内容:

  1. 我将myapp添加到 tsconfig.js exclude部分。如果我关闭Visual Studio并再次打开,那么当时不会生成 js和js.map 。但是我看到了很多编译错误。

  2. 我将<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>添加到.csproj文件中。我关闭VS 2017,再次打开并进行了构建。我看到了JS和JS.MAP文件。

  3. 我将BuildAction属性更改为none,但仍然看到JS和JS.MAP文件

  4. enter image description here

    我应该怎么做才能对TS文件进行语法检查,但不生成任何JS和JS.MAP文件?

4 个答案:

答案 0 :(得分:4)

尝试在您的"noEmit": true中添加tsconfig。它应防止.js .js.map生成。

答案 1 :(得分:2)

尝试在您的 tsconfig 中添加 {{1}}。如果 TS 文件中有任何错误,它应该会阻止 .js .js.map 生成。

答案 2 :(得分:0)

如果 Visual Studio 似乎忽略了 tsconfig 文件中的 noemit 选项,请编辑您的项目文件。在项目文件中,转到包含其余 TypeScript 选项的 <PropertyGroup> 并在该 PropertyGroup 的开始和结束标记之间添加 <TypeScriptNoEmit>True</TypeScriptNoEmit>

答案 3 :(得分:0)

我注意到,如果我使用 angular 创建文件,它不会发出 .js,但如果我通过“新建项目”菜单从 Visual Studio 添加新的 TypeScript 文件,它会发出。事实证明,后者将构建操作设置为“TypeScript 文件”,而前者将构建操作设置为无,请勿复制。我将有问题的 TypeScript 文件更改为 None 并停止生成 .js 文件。这与 OP 没有影响的声明相反 - 但在我的情况下它起作用了。设置 noEmit: true 只会导致没有为我的 angular ng 构建生成 vendor.js 文件。