在项目的某些区域中从.ts生成了不需要的* .js和* .js.map文件

时间:2018-08-23 21:33:41

标签: typescript visual-studio-2017 angular-cli angular-cli-v6

我正在Visual Studio 2017中开发一个angular cli v6项目,并注意到正在为我的打字稿的 some 生成不需要的.js和.js.map`文件文件放在同一文件夹中。 (我不想生成任何内容)

我注意到以角度元素(“服务”,“解析器”,“组件”,“指令”)命名的文件夹中的任何文件似乎都没有创建这些多余的文件。

例如,如果我在components文件夹中创建my-component.component.ts,则不会生成任何额外的js / js.map文件。

我的问题是双重的:

  1. 确定是否生成这些额外文件的条件是什么?
  2. 如何防止它们生成

项目文件结构(显示不需要的文件)

 src
 |-- app
 |   |-- components (no generated js/js.map files here)
 |   |   |-- my-component.component.ts
 |   | 
 |   |-- resolvers  (no generated js/js.map files here)
 |   |   |-- my-resolver.resolver.ts
 |   |
 |   |-- services   (no generated js/js.map files here) 
 |   |   |-- my-service.service.ts
 |   |
 |   |-- types      (has generated js/js.map files)
 |   |   |-- my-type.type.js  **dont want this file!**
 |   |   |-- my-type.type.js.map **dont want this file!**
 |   |   |-- my-type.type.ts

这是我的tsconfig.json文件

ClientApp / tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

ClientApp / src / tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "es2015",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}

ClientApp / src / tsconfig.spec.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/spec",
    "baseUrl": "./",
    "module": "commonjs",
    "types": [
      "jasmine",
      "node"
    ]
  },
  "files": [
    "test.ts",
    "polyfills.ts"
  ],
  "include": [
    "**/*.spec.ts",
    "**/*.d.ts"
  ]
}

ClientApp / e2e / tsconfig.e2e.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/e2e",
    "baseUrl": "./",
    "module": "commonjs",
    "target": "es5",
    "types": [
      "jasmine",
      "jasminewd2",
      "node"
    ]
  }
}

2 个答案:

答案 0 :(得分:3)

这是由于某些过程调用tsc命令时使用的配置与您在问题中给出的配置不同而引起的。

如果这是angular-cli,我会感到惊讶,因此我怀疑是Visual Studio本身。

在Visual Studio项目设置中,查找打字稿选项,然后尝试在保存/相似状态下禁用编译

此外,如果存在其他配置导致不正确的行为,则值得在项目目录中检查其他tsconfig文件。

当然,您需要手动删除这两个文件,并查看它们是否在进行任何更改后恢复。

答案 1 :(得分:2)

首先,这就是TypeScript的工作方式。当您运行“ tsc”命令时,TypeScript会编译(转换)为JavaScript,这就是生成.js文件的原因。如果您查看已编译的.js,则将看到以最佳JavaScript方法编写的代码。

第二,.map文件是出于不同的原因而提供的。主要用于调试,例如在Chrome开发工具中进行调试等。请参考以下链接:What is a TypeScript Map file?

如果您仍然不希望使用.map文件,则可以在tsconfig.json中将“ sourceMap”更改为false。