2016-06-15 14 views
0

外に独自のコンパイル済みのJSをコンパイルコンパイルされた出力はcompiledに入るはずです。私tsconfig.jsonは、次のようになります。TSCは、私はこのようなファイル構造を持つプロジェクトが持っているROOTDIR

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "target": "es5", 
    "rootDir": "./src/", 
    "outDir": "./compiled/", 
    "allowJs": true 
    }, 
    "exclude": ["node_modules"] 
} 

私は私の驚きにTSCを実行すると、それはまた、これはrootDir外であっても、compiledディレクトリに独自のコンパイルされた出力をコンパイルしようとすると、allowJsが有効になっているので、それはかなります非常に無限に自身の放出JSを再コンパイルし、compiled/compiled/compiled/compiled/ dirsを作成します。

rootDirは、コンパイルするファイルをルートディレクトリに限定すると考えました。私はexcludeに "compiled"を追加できますが、rootDirの外側にはJS(他のビルドツールなど)が含まれていて、好ましくないコンパイルが行われていて、allowJsが出力されています...すべてを明示的にコンパイラの入力をsrcパスに明示的に限定する方法がないのですか?

答えて

1

私は--rootDirとは思っていません - 出力ディレクトリ構造をより詳細に制御できるようになりました。 (tsconfig.jsonスキーマからの)パラメータの

ドキュメント:

入力ファイルのルートディレクトリを指定します。 --outDirを使用してディレクトリ構造 を制御するために使用します。そのオプションを実装

プル要求の説明:https://github.com/Microsoft/TypeScript/pull/2772

への値の下で出力入力構造を複製さ--outDirを使用して、コンパイラの現在の動作--outDir 。入力のルートは、すべてのソースファイル(.tsおよび.d.tsファイル)の最長共通パスとして計算されます。したがって FolderA \ FolderB \ 1.tsとFolderA \ FolderB \ 2.tsを入力すると、 はFolderA \ FolderBのcommonSourceRootを計算します。新しいファイル FolderA \ 3.tsが入力に追加された場合、commonSourceRootはFolderAに をポップアウトします。

一つの良い説明と例より:https://github.com/Microsoft/TypeScript/issues/287

+0

理にかなって、私は間違いなく 'rootDir'の目的を理解していませんでした。 'tsconfig.json'を使ってコンパイラの入力をディレクトリパスに制限する方法はありませんか? – Aaron

+1

@Aaronディレクトリを '除外 'することもできるし、' files'を使って特定の個々のファイルを含めることもできます。 'tsconfig.json'ファイルは、ルート以外のサブフォルダに置くこともできます。 –

+0

入手しました。ご協力いただきありがとうございます! – Aaron

関連する問題