2017-07-17 16 views
2

申し訳ありませんが、これはnobb質問ですが、私は角アプリを構築することだし、私の現在のtsconfig.jsonファイルは「compilerOptions」内の「ターゲット」として「ES6」を持っている場合:compilerOptionsに複数のターゲットを置くことは可能ですか?

{ 
    "compilerOptions": { 
    "target": "es6", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "types" : [] 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

は、することが可能です複数のターゲットを持っていますか?たとえば、私はes5で追加できますか?私はes5のために書かれたチュートリアルを行っているので単純に尋ねますが、私のプロジェクトの現在の状態のためにes6を使う必要があります。つまり、私はダウングレードできません。私のコードはすべてes6に準拠していなければなりません。もし両方が含まれていれば、私のコードはes5とes6の両方に準拠できると思います。

答えて

2

は、コンフィグレーションに1つだけtargetと指定できます。 targetプロパティはcompilerOptionsで、単一の文字列値を受け入れます。 ES5を指定

ターゲットはがES6でソースを書い以上からあなたを制限しないと同じように、それは単にコンパイルされたコードのみES5を理解したり、下のクライアントと互換性があることを保証します。ラムダ式などの機能は、関数式にコンパイルされます。

const foo = (bar) => bar.replace('\t', '');のような式は、ES5に設定されたターゲットでvar foo = function (bar) { return bar.replace('\t', ''); };にコンパイルされます。

ターゲットをES5またはES6にコンパイルする必要があるのは、実際にどのデバイス/ブラウザがアプリケーションを使用するかによって異なりますが、現時点では、ES5は互換性の面でより安全な選択となるでしょう。ここにはES6 browser comparabilityを決定するための素晴らしいリソースがあります。

これは、物事を明確にするのに役立ちます。

3

複数のtsconfigファイルを作成して、拡張機能を使用して、ほとんどの要素をカバーするベースtsconfigを作成し、ターゲットをカバーする2つのターゲットtsconfigを作成することもできます。

ベースのTSconfig:

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "types" : [] 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

ES5のTSconfigの:

{ 
    "extends": "./base.json" 
    "compilerOptions": { 
     "target": "es5" 
    } 
} 

ES6のTSconfigの:

{ 
    "extends": "./base.json" 
    "compilerOptions": { 
     "target": "es6" 
    } 
} 

次に、あなたはちょうどあなたが必要とするターゲットどちらで実行する必要があります:tsc -p ./es6.json

これは、コードが同時に両方に準拠することを意味するものではありません。ただし、オプションで、ベースを拡張する各tsconfigにoutDirプロパティを追加し、出力を別々のディレクトリにコンパイルすることもできます。

関連する問題