web-dev-qa-db-ja.com

不要な* .jsおよび* .js.mapファイルがプロジェクトの一部の領域で.tsから生成されています

私はVisualStudio2017でangular cli v6プロジェクトを開発していて、不要な.jsおよび.js.map`ファイルが生成されている for同じフォルダー内のTypeScriptファイルの一部(生成されたくない)

angular要素( 'services'、 'resolvers'、 'components'、 'directives')にちなんで名付けられたフォルダー内のファイルは、これらの余分なファイルを作成していないようです。

たとえば、componentsフォルダー内にmy-component.component.tsを作成した場合、追加のjs /js.mapファイルは生成されません。

私の質問は2つあります:

  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"
    ]
  }
}
8
Eric Phillips

これは、質問で指定した構成とは異なる構成でtscコマンドを呼び出すプロセスが原因で発生します。

これがangular-cliであるとしたら驚きます。そのため、私の疑いはVisualStudio自体にあります。

Visual Studioプロジェクトの設定で、TypeScriptオプションを探し、保存時にコンパイルを無効にしてみてください。

また、誤った動作を引き起こしている別の構成がある場合は、プロジェクトディレクトリで他のtsconfigファイルを確認することをお勧めします。

もちろん、2つのファイルを手動で削除し、変更を加えた後にそれらが戻ってくるかどうかを確認する必要があります。

3
Michael

まず、それがTypeScriptの仕組みです。 「tsc」コマンドを実行すると、TypeScriptはJavaScriptにコンパイル(トランスパイル)します。そのため、.jsファイルが生成されます。コンパイルされた.jsを調べると、可能な限り最高のJavaScriptの方法で記述されたコードが表示されます。

次に、さまざまな理由で.mapファイルが提供されます。 Chrome開発ツールなど。次のリンクを参照してください。 TypeScriptマップファイルとは何ですか?

それでも.mapファイルが必要ない場合は、tsconfig.jsonで「sourceMap」をfalseに変更できます。

2
MarkoVovchok