web-dev-qa-db-ja.com

TypeScript「保存時にコンパイル」機能がVisual Studio 2015で機能しない

Visual Studio 2015にアップグレードした後、「保存時にコンパイル」機能が動作しません。プロジェクトで.tsファイルに変更を加えて保存すると、IDEはOutput(s) generated successfullyと表示されますが、生成された.jsファイルは変更されません。

私が試したものは次のとおりです。

  • <Project>のルート.csproj要素に次を追加します。

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • Tools -> Options -> TypeScript -> Projectの[プロジェクトの一部ではないTypeScriptファイルを自動的にコンパイルする]オプションをオンまたはオフにします。

    enter image description here

  • 私のプロジェクトのTypeScriptビルドプロパティで「保存時にコンパイル」がチェックされていることを確認するためのダブルチェック:

    enter image description here

私は何が欠けていますか?

副次的な注意事項として、TypeScriptのコンパイル手順は、通常のビルドによってトリガーされたときに期待どおりに機能します。

76
Nathan Friend

この問題は、TypeScript Language Services拡張機能の最新の更新で解決されたようです。

この回答を参照 この更新プログラムを適用する方法の手順について。

5
Nathan Friend

私にとっては、tsconfig.jsonのこのオプションでした:

"compileOnSave": true,
"compilerOptions": { ... },

この変更を有効にするには、Visual Studioを再起動します。

130

今日、この問題に出くわしました。新しい"watch":trueコンパイラオプションを使用して修正しました。これは、最新のTypeScriptバージョンのJSONでも利用できます。

{
  "compilerOptions": {
    "watch": true
  }
}

それを行った後、出力ウィンドウに表示される次のエラーに関連する別の問題を解決する必要がありました。

Object doesn't support property or method 'watchFile'

TypeScript(1.0.x)の古いバージョンを使用していることが判明しましたが、Visual Studio 2015更新1(1.7)。この問題が発生した場合は、コマンドプロンプトからtsc -vと入力することにより、TSCバージョンを簡単に確認できます。

1.0.xまたは1.7未満の場合は、おそらくPATH環境変数に古い参照がいくつかあるためです。 Type SDKパッケージが更新されたときにインストールするためにVisual Studioで使用されるMicrosoft SDKフォルダー内を確認して、1.7以降がインストールされていることを確認してください。

C:\Program Files (x86)\Microsoft SDKs\TypeScript

そうでない場合は、それに応じて更新します。 OpenCPanel>System>Advanced>環境変数システム変数を選択して、編集; TypeScriptフォルダーへの参照を探してリストを参照し、TypeScriptの最新のインストールバージョン(1.7以上)を指すようにそれらのいずれかを変更し、他の重複を削除します。以下のスクリーンショットも参照してください。

enter image description here

詳細については、ブログで この投稿 をお読みください。

31
Darkseal

解決:

私にとって、これは他の人にも当てはまると確信しています。これは、tsconfig.jsonの間違いが原因でした。

「compileOnSave」を追加する必要があります:true。ただし、compilerOptions内ではなくグローバルセクション内。

Wrong:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "compileOnSave": true

  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Correct:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"

  },
"compileOnSave": true,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

宜しくお願いします、

Anders Both Basechat。

5
Anders Both

私の場合、VS 2012と共にVisual Studio Community 2015をインストールしました。2012年にはType Essentials for Web Essentialsを使用していましたが、2015年と競合するようです。

2012年にWeb Essentialsをアンインストールすると、問題が修正されました。

2

TypeScript 2では、tsconfigから「outDir」を削除する必要があります。 Visual Studioでのバグを修正します。

2
Yvan

"compileOnSave": true,は機能していませんでした。最後に、拡張している別の"compileOnSave": true,ファイルで定義されている場合、Visual Studioは.json値を尊重しないことがわかりました。動作するためにはルートになければなりません。

1
Daryl

プロジェクトのプロパティ->「TypeScript Build」で、「エラーが報告された場合に出力を出力しない」のチェックを外すこともできます。チェックすると、保存時にエラーが発生するかどうかにかかわらず、トランスコンパイルが無効になります。

1

terminal/cmdでC:\ file.tsなどのファイルを見つけて入力します

tsc file.ts -w // watches for file changes and converts on save
1
WasiF

ここでもまったく同じ問題です。 Visual Studio 2015 update 3およびTypeScript 2.9.2.0を使用しています。 tools/options/projectsおよびsolutions/external web toolsで、$(PATH)を2番目の位置にアップグレードしました。これらすべての構成では、compileOnSave:trueは機能しません。回避策は、コマンドラインを開き、ng build --watchをサイドで実行し、ノードに自動コンパイルを処理させることです。

0
Yue Yin