【问题标题】:How to stop Typescript compiler from generating JS and JS.MAP files in Visual Studio 2017?如何阻止 Typescript 编译器在 Visual Studio 2017 中生成 JS 和 JS.MAP 文件?
【发布时间】:2017-08-28 12:38:17
【问题描述】:

我的 Visual Studio 2017 ASP.NET 项目中有一些 typescript 文件用于我的应用程序 myapp。我使用 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.jsexclude 部分。如果我关闭 Visual Studio 并再次打开,当时不会生成 js 和 js.map。但是我看到很多编译错误。

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

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

我应该怎么做,TS 文件的语法检查会起作用,但不会生成任何 JS 和 JS.MAP 文件?

【问题讨论】:

  • 我遇到的问题不同。我没有从 Visual Studion 的菜单中执行 build 选项。我只是关闭并打开项目并开始看到这些行为。
  • 我知道这有点老了,但如果你的问题主要是 js.map,你可以在 tsconfig 上将 sourceMap 设置为 false
  • @wonderfulworld 你找到解决办法了吗?
  • @wonderfulworld 你的VS实际上每次都在运行TSC命令来检查TS错误(它读取tsconfig.json),没有“noEmit”:true会将JS文件输出到你的文件夹......跨度>

标签: visual-studio typescript


【解决方案1】:

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

【讨论】:

  • 这对我不起作用,你知道为什么会这样吗?
  • @ChristopherThomas 检查你的打字稿版本,如果它早于 4.0,那么有一个名为 "incremental": true 的标志与 "noEmit": true 冲突
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这个是为我做的。注意:您可能需要在更改项目文件后重新启动 VS 才能使更改生效。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 2017-09-04
      • 1970-01-01
      • 2011-01-08
      • 2017-08-01
      相关资源
      最近更新 更多