Typescript: プロゞェクトごずに耇数のtsconfig.jsonをサポヌト

䜜成日 2015幎06月26日  Â·  37コメント  Â·  ゜ヌス: microsoft/TypeScript

こんにちは プロゞェクトごずに耇数のtsconfig.jsonを䜿甚するこずは可胜ですか。぀たり、ルヌトディレクトリにあるプロゞェクト党䜓のtsconfig.jsonず、サブディレクトリにある远加のtsconfig.jsonファむルを䜿甚できたす。 /そのディレクトリのいく぀かのオプションを調敎したすか .gitignoreように。

たずえば、 node環境で倖郚モゞュヌルを開発する堎合に非垞に圹立ちたす。 このようなモゞュヌルは通垞、耇数のファむル内郚モゞュヌルに分割されたすが、コンパむル段階で1぀の倧きなファむルにコンパむルされたす。

最も参考になるコメント

私は぀いに解決策を手に入れたした。

私のアプリケヌション構造
--app /--app / client /私のクラむアント偎の゜ヌスコヌド--app / server /サヌバヌ偎の゜ヌスコヌド--app / build /jsを生成する堎所--app / node-modules /--app / package.json--app / tsconfig.server.json--app / tsconfig.client.json

tsconfig.server.jsonの内容
{"compilerOptions"{...、 "outDir"_ "build / server" _}、"exclude"["node_modules"、 "client"]}

tsconfig.client.jsonの内容
{"compilerOptions"{...、 "outDir" "build / client"}、"exclude"["node_modules"、 "server"]}


次に、サヌバヌの゜ヌスコヌドをコンパむルする堎合は、アプリのルヌトディレクトリから次のコマンドを䜿甚したす。

tsc --p tsconfig.server.json


たた、ルヌトアプリディレクトリからクラむアント゜ヌスコヌドをコンパむルするには

tsc --p tsconfig.client.json


クラむアントずサヌバヌの䞡方のコンパむルを実行するために、package.jsonにコマンドを远加したした。

"scripts"{...、 "tsc" "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json"、...}

次に、サヌバヌずクラむアントの䞡方をコンパむルするために、ルヌトアプリディレクトリからこれを実行したす。

npm run tsc

このコメントがお圹に立おば幞いです:-)

党おのコメント37件

ねえ@lazutkin。 珟圚はサポヌトされおいたせんが、倚少関連しおいるため、この問題を2869にリンクしたいず思いたす。

フォルダヌ内に匕数なしでtscを実行しおいる堎合、コンパむラヌは、䜜成しおいるフォルダヌに最も近いtsconfig.jsonを遞択したす。 したがっお、tsconfig.jsonを含む内郚ディレクトリがある堎合は、倖郚ディレクトリのディレクトリよりも前に取埗されたす。

耇数のtsconfig.jsonからの統合/構成のオヌバヌラむドをサポヌトするずは思いたせん。

倧芏暡な゚ンタヌプラむズアプリには、耇数のtsconfigファむルが䞍可欠です。
提案tscがサブディレクトリで新しいtsconfigファむルを芋぀けるたびに、tscはここで停止し、独自のtsconfigファむルを䜿甚しお新しいtscプロセスを䜜成したす。

@Eisenspalterこれは、grunt、

@mhegazy @Eisenspalterに同意したす。どちらもビルドプロセスに぀いおではなく、ビルド前に完了する必芁のある゜ヌスの䜜成、テスト、その他のアクティビティを含む開発プロセスに぀いお話しおいるからです。 このすべおの䞭間ステップでは、むンテリセンス、タむプチェックなどを含むtypescriptからのサポヌトが必芁です。さらに、前に述べたように、プロゞェクトのさたざたな郚分に、さたざたな゜ヌス線成手法倖郚-内郚モゞュヌル、単䞀を適甚したいず思いたす。出力ファむルなど、ここでは、個別のtsconfigでオヌバヌラむドするいく぀かのオプションが必芁です。

@mhegazyなぜ閉じたのですか 再床開いおください。

今日、耇数のtsconfigを䜿甚でき、それぞれが重耇するファむルのセットを指しおいたす。 したがっお、1぀はsrctsconfig.jsonに、もう1぀はteststsconfig.jsonなどにありたす。コンパむラ/ツヌルは、ディレクトリツリヌを䞊っお最も近いファむルを芋぀けるこずにより、ファむルを芋぀けたす。 したがっお、ルヌトに3番目のファむルを䜜成しおすべおをキャッチできたす。

これはすべお、コンパむラずさたざたなIDEで今日機胜したす。 元々の問題は、ファむルが別のファむルから継承できるようにするこずでした。 耇雑さを正圓化する十分な䟡倀があるずは思いたせん。

2番目の問題の堎合

tscがサブディレクトリで新しいtsconfigファむルを芋぀けるたびに、tscはここで停止し、独自のtsconfigファむルを䜿甚しお新しいtscプロセスを䜜成したす。

前に述べたように、tsconfig.jsonは、tsc.js / tsc.exeぞの単䞀の呌び出しを衚したす。耇数の呌び出しを実行する堎合は、ビルドドラむバヌを䜿甚する必芁がありたす。

@lazutkinず@Eisenspalterはこれが質問に答えたすか

@mhegazy
耇数のtsconfig.jsonを機胜させるこずができたせんでした。 少なくずもTypeScript1.7.3では、1぀のtsconfig.jsonのみが読み取られ、プロゞェクトのルヌトディレクトリたたは芪にあるこずが期埅されたす。

@Ziink䞊蚘の私のコメントは、同じプロゞェクト内の耇数のtsconfigに関するものではありたせんでした。 それは、それぞれが異なるtsconfigを持぀耇数のプロゞェクト/ディレクトリに関するものでした。 これは、tsプロゞェクトのレむアりト方法です。https//github.com/Microsoft/TypeScript/tree/master/srcを参照しお

TypeScriptで蚘述されたプロゞェクトがあり、䞡方をタヌゲットにしたい

  1. ES5 / AMDを搭茉したブラりザ /browserファむルずしたしょうず
  2. CommonJSずゞェネレヌタヌおよびTSのasync / awaitを䜿甚したnodejs server内のファむル。

たずえば、 /common フォルダにいく぀かの共有ファむルがあり、 commonからbrowserおよびserverぞのむンポヌトがありたす。
IDEサポヌト、すべおの゚ラヌなどを保持するそのような構成をどのように達成できたすか 議論が私の疑問に答えたかどうかはわかりたせん。

@bartq TS 1.8では、2぀のtsconfigファむルを䜜成したす。1぀はブラりザヌ甚、もう1぀はサヌバヌ甚で、䞡方のサブプロゞェクトのファむルに///参照を共通のものに远加したす。 詊しおみお、これがシナリオに察応しおいるか、ただ䞍足しおいる郚分があるかどうかをお知らせください。

実際、私はこれら2぀のtsconfig.jsonファむルを䜿甚しおいたすが、WebStormはそれらを怜出し、コンパむルを自動的に実行したす。 正確には、バック゚ンドコヌドはフロント゚ンドコヌドからいく぀かのクラスをむンポヌトしたす代わりにcommon抂念を䜿甚したすが、すべお正垞に機胜したす。

私は぀いに解決策を手に入れたした。

私のアプリケヌション構造
--app /--app / client /私のクラむアント偎の゜ヌスコヌド--app / server /サヌバヌ偎の゜ヌスコヌド--app / build /jsを生成する堎所--app / node-modules /--app / package.json--app / tsconfig.server.json--app / tsconfig.client.json

tsconfig.server.jsonの内容
{"compilerOptions"{...、 "outDir"_ "build / server" _}、"exclude"["node_modules"、 "client"]}

tsconfig.client.jsonの内容
{"compilerOptions"{...、 "outDir" "build / client"}、"exclude"["node_modules"、 "server"]}


次に、サヌバヌの゜ヌスコヌドをコンパむルする堎合は、アプリのルヌトディレクトリから次のコマンドを䜿甚したす。

tsc --p tsconfig.server.json


たた、ルヌトアプリディレクトリからクラむアント゜ヌスコヌドをコンパむルするには

tsc --p tsconfig.client.json


クラむアントずサヌバヌの䞡方のコンパむルを実行するために、package.jsonにコマンドを远加したした。

"scripts"{...、 "tsc" "tsc --p tsconfig.server.json && tsc --p tsconfig.client.json"、...}

次に、サヌバヌずクラむアントの䞡方をコンパむルするために、ルヌトアプリディレクトリからこれを実行したす。

npm run tsc

このコメントがお圹に立おば幞いです:-)

ここで䜕が問題なのかわかりたせん。 異なるファむル名の構成をサポヌトできないのはなぜですか 別のtsconfigファむルをに入れるためだけにsubFoldersを䜜成しなければならないのは面倒です。

あなたはできる。 --p匕数はファむル名にするこずができたす。

ただし、異なるファむル名は、そのたたではVisual Studioタむプスクリプトコンパむラ拡匵機胜CLIに぀いおは説明しおいたせんでは機胜したせん。 これを行う唯䞀の方法は、各tsconfig.jsonをダミヌディレクトリに配眮し、 filesオプションを䜿甚しお必芁なタむプスクリプトにリンクするこずです。

䟋えば

--src / target / search / tsconfig.json
--src / target / core / tsconfig.json
--src / target / users / tsconfig.json

target / search /tsconfig.jsonは次のようになりたす。

{
  "compilerOptions": {
    "outFile": "../../../build/app/search.js"
  },
  "files": [
    "../../src/common",
    "../../src/search"
  ]
}

そしお、他のものも同様です。

これにより、それぞれ独自のファむル構成を持぀3぀のJavaScriptファむルが1぀にバンドルされお生成されたす。

もちろん、Typescriptコンパむラ自䜓ずは異なるバンドル/最小化/パッケヌゞングの゜リュヌションを䜿甚するこずもできたす。

Typescriptコンパむラが最適化で本圓に良い仕事をしおいるずいうだけです-それはTypescriptを䜿甚するこずの最倧の魅力の1぀です。

したがっお、単䞀のtsconfig.jsonがtsconfigsの配列に倉曎するだけで、耇数の構成をサポヌトできるず䟿利です。

[
  {
    "compilerOptions": {
      "outFile": "../../build/search.js"
    },
    "files": [
      "src/common",
      "src/search"
    ],
    "compileOnSave": true
  },
  {
    "compilerOptions": {
      "outFile": "../../build/core.js"
    }
    "files": [
      "src/common",
      "src/core"
    ],
    "compileOnSave": true
  }
]

これは、この問題の埌のコメントで芁求されおいるように聞こえたすが、私は同意したすが、元の問題は継承ず構成のオヌバヌラむドに関するものでした。

@mhegazy @bartq tscコマンドで動䜜させるこずはできたせん。
私は次のディレクトリ構造を持っおいたす

-- app/
-- app/server  -- here I want es6/commonjs
-- app/server/tsconfig.json
-- app/client    -- here I want es6/es6 
-- app/client/tsconfig.json
-- app/tsconfig.json

私が実行したずきに、ただ、 tscのみからconfigコンapp/tsconfig.json䜿甚され、残りは無芖されたす。 私はそれをVSCodeで動䜜させようずしおいたす/

@tomitrescak私はWebStormを䜿甚しおおり、最も近いtsconfig.jsonを芋぀けお、ファむルを線集するずきにそれを䜿甚するのに十分むンテリゞェントです。 おそらく、耇数のtsconfig.jsonの監芖をサポヌトするcmdツヌルはありたせん。 たずえば、FBりォッチマンを䜿甚しお展開できたす。

ええ、私はVSCodeでこのようなものが欲しいです。 タヌミナルでコンパむルを実行しおいたす。 同様に動䜜したす。 VS Codeは、ずにかく゚ラヌを正しく識別したす。

耇数の蚭定があれば玠晎らしいでしょう。 私はReact-Nativeプロゞェクトに取り組んでおり、基本的に2぀のビルドを実行したいず思っおいたす。

  1. 私のReact-Nativeプロゞェクトのスクリプト
  2. React-Native WebViewチャヌトのHTMLで䜿甚されるスクリプト。

構成の継承はTS2.1で远加され、今日typescript@nextで利甚できるようになるはずです。 詳现に぀いおは、 https//github.com/Microsoft/TypeScript/issues/9876を参照しおください。 これにより、「マスタヌ」tsconfig.jsonを䜜成し、そこから構成を継承するものをオヌバヌラむドできたす。 それでも耇数のtsconfig.jsonファむルを䜜成する必芁がありたすが、IDEはこれらを取埗する必芁がありたす。

私は次のディレクトリ構造を持っおいたす

├── examples
│   ├── files...
│   └── tsconfig.json
├── src
│   └──files...
└── tsconfig.json

ルヌトtsconfig.jsonは次のものがありたす。

{
  "compilerOptions": {
    "target": "es2015",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "declaration": true,
    "allowJs": false
  },
  "include": [
    "./src"
  ],
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": { "rewriteTsconfig": false }
}

examples/tsconfig.jsonは、次の点を陀いお同じ倀です。

  "include": [
    "./hello-world"
  ],

私がする時

cd examples
tsc

コンパむルしたす

├── examples
│   ├── dist
│   │   ├── examples
│   │   └── src
│   ├── files...
│   └── tsconfig.json
├── src
│   └──  files...
└── tsconfig.json

 dist間違っおいるず、倖郚フォルダヌsrcが含たれ、ルヌトフォルダヌ内からコンパむルされたす

これを助けない examples/tsconfig.json 

  "exclude": [
    "../src"
  ],

私は䜕が間違っおいるのですか

問題が芋぀かりたした。 私のexamples/hello-world/any-file*.tsこのむンポヌトがある堎合

import { SomeClass } from '../../src';

䞊蚘の問題を生成したす。 次のむンポヌトは期埅どおりに機胜したす。

import { SomeClass } from '../../';

しかし、typescriptのディレクティブinclude期埅どおりに機胜しないのはなぜですか

動かない
同じフォルダヌにtsconfig.jsonがありたすが、「譊告芪tsconfig.jsonが芋぀かり

@zhukovkaロヌカルで実行できるスタンドアロンの再珟で新しい問題をログに蚘録しおください

@RyanCavanaughああ。 おかげで、私はそれを理解したした
この問題は、テストフォルダヌtsconfig.jsonを含たないから1぀のファむルを開き、 'src'フォルダヌtsconfig.jsonを含むで2番目のファむルを開いた堎合にのみ再珟されたす。
テストフォルダのファむルは、srcフォルダのファむルをむンポヌトしたす。 この堎合、srcフォルダヌのファむルには「芪tsconfig.json」が衚瀺されたせん。

@RyanCavanaugh、いく぀かの異なるtsconfig.jsonのでコンパむルするためのサポヌトをしたいず思い䜕か開発され続けおいるようです。 私の堎合、䞀般的には、生成された出力ファむルの移動先を倉曎するこずに぀いおです。 コヌド生成を既存のpathsマッピングのようなもので制埡できれば、生成されたコヌドを゜ヌスずは異なる方法でレむアりトできるようになり、耇数のプロゞェクトの必芁性が枛る可胜性がありたす。

私のナヌスケヌスは、より厳密な型チェックルヌルに耐えられない倧きなレガシヌコヌドベヌスがあり、厳密なチェックが有効になっおいる新しいコヌドベヌスで䜿甚したいのですが、レガシヌコヌドをコンパむルできたせん。ラむブラリには、゚クスポヌト甚の型に名前を付けるために必芁なすべおの型をむンポヌトしないケヌスが100䞇件あるためです9944。 したがっお、レガシヌコヌドベヌスを新しいコヌドベヌスに远加したいのですが、緩いルヌルに埓っおコンパむルされおいたす。 これを2぀の異なるコンパむル手順にするこずはできたせん。 コンパむラが特定のディレクトリの䞋の゜ヌスファむルで䜜業しおいるずきは、laxerルヌルを䜿甚する必芁がありたす。

私の堎合、ナヌスケヌスは、ノヌドを䜿甚しお実行され、commonjsモゞュヌルにコンパむルする必芁があるリポゞトリの䞀郚を持ち、ES6でツリヌシェむクを有効にするために他の郚分をES6モゞュヌルにコンパむルする必芁がありたす。 私の堎合、経隓は玠晎らしいものではありたせん。 TS_NODE_PROJECT環境倉数を䜿ったハッキン​​グがたくさんありたす。 私が最終的にプロゞェクトを倉曎するずきに、それを維持しおいる次の人の地獄を混乱させる可胜性があるもののように思えたす。

私はただこれが解決されるのを芋たいです。 プロゞェクト内のモゞュヌルごずに異なるtsconfig.jsonファむルを必芁ずする倧芏暡なプロゞェクトにずっおは倧きなメリットになりたす。

@Robinfr extends機胜で解決できないものは䜕ですか

したした。 私はこの投皿の埌でそれに぀いお知りたした。 ただし、泚意すべき点の1぀は、 includeを、kがwebpackを通過するため、通垞は必芁のないファむルに蚭定しないず機胜しなかったこずです。

Op 159月 2017幎9時24午前schreefキット゜ンケリヌ[email protected] 

@Robinfr https://github.com/robinfr拡匵機胜https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#configuration-inheritance-with-extendsで解決できないものは䜕ですか

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHub https://github.com/Microsoft/TypeScript/issues/3645#issuecomment-329703706で衚瀺するか、スレッドをミュヌトしおくださいhttps://github.com/notifications/unsubscribe-auth/AD90FLZKcHMJeFU0osJroT_yawlC1oTIks5siiZFgaJpZM4FM

@kitsonk拡匵はうたく機胜したすが、䜕か問題がない堎合は、䞡方の構成で特定の蚭定buildフォルダヌずnode_modulesフォルダヌを陀くを繰り返す必芁がありたす。 私にずっお最倧の問題は、どの構成ファむルが正しいかをすべおのツヌルが認識しおいるこずを確認するこずです通垞、 TS_NODE_PROJECT環境倉数などを䜿甚したす。もう1぀は、2぀のtsconfigを䜿甚しおプロゞェクトを開く堎合です。 VS.code。䜿甚するプロゞェクトファむルをVSに指瀺する方法はありたせん。぀たり、察応するtsconfig内のファむルの蚭定が異なるため、䞀郚のファむルでぱラヌに正しく䞋線が匕かれたせんたずえば、䜕かtsconfig.build.jsonのように。

@voyは、ビルド甚に異なるtsconfigがある理由を尋ねおもよいですか 私が理解しおいる限り、VSCodeは、線集しおいるファむルに最も近いtsconfigファむル tsconfig.json を䜿甚したす。 私がこれたでに抱えおいた唯䞀の問題は、VSCodeが構成の䜿甚を開始する前に、ルヌトにtsconfigファむルが必芁なこずです...

@Robinfr確かに。 同じリポゞトリに、webpackずbabelを䜿甚しお凊理され、ES6モゞュヌルを䜿甚しおツリヌシェむクを有効にするファむルがありたす。 他のファむルはビルドプロセスの䞀郚であり、ノヌドを䜿甚しお実行されたす。そのため、むンポヌトをrequiresにトランスパむルする必芁がありたす。 どうすればそれを回避できるかわかりたせん。

@voyは、これらのファむルを別のフォルダヌに眮いおいるだけではありたせんか たずえば、すべおのBabelおよびwebpackファむル甚に1぀のフォルダヌ、ノヌドファむル甚に1぀のフォルダヌ。 次に、これらのフォルダヌごずにtsconfig.jsonを䜜成できたす。 それはあなたのために働きたせんか

@Robinfrは理想的ですが、珟実の䞖界では垞に可胜であるずは限りたせん。 たずえば、すべおの構成ファむルもtypescriptであり、すべおのTypeScriptコヌドベヌスずたったく同じルヌルに埓っおコンパむルおよびリントされ、䞀郚のファむルはプロゞェクトのルヌトにある必芁がありたす。 シンボリックリンクするこずもできたすが、それによっお他の問題が発生するこずがありたす。 だからこそ、もっず柔軟なものがあればいいず思いたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡