web-dev-qa-db-ja.com

複数のtsconfigファイルを使用するには?

私はVisual Studio Codeを使用しており、かなり一般的なプロジェクト構造を持っています:

├── client/
│   ├── tsconfig.json
├── shared/
├── server/
│   ├── tsconfig.json
├── project.json

2つのtsconfigファイルには異なる設定があります(例:client/がES5をターゲットに、server/がES6をターゲットにしています)。

問題は、両方のプロジェクトに共有ディレクトリを含めることです。 excludeオプションではtsconfig.jsonよりも上位のディレクトリにあるフォルダーを含めることができないため、tsconfigを使用してこれを行うことはできません。また、filesグロブをサポートしていないため、最新のファイルのリスト。

共有フォルダをtscに追加することで問題なくコンパイルできることに注意してください。VisualStudio Code IDEがインテリセンスなどの共有コードを認識するために必要なものです。

filesGlob を待つ唯一のオプションですか?

24
Mike Jerred

ルートに単一のtsconfig.jsonを使用します。そして、プロジェクトごとに拡張します(バックエンドtsconfig.server.json、フロントエンドtsconfig.webpack.json)。

  • ルートtsconfig.jsoninclude: ['src']は、すべてのファイルがIDEで型チェックされるようにします
  • バックエンドtsconfig.server.jsonexclude: ['src/app']フロントエンドファイル
  • フロントエンド:tsconfig.webpack.jsonexclude: ['src/backend']バックエンドファイル

フォルダー構造

├── src/
│   ├── app/    < Frontend
│   ├── server/ < Backend
│   ├── common/ < Shared
├── tsconfig.json
├── tsconfig.server.json
├── tsconfig.webpack.json

構成ファイル

tsconfig.json

{
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  },
  "include": [
    "src"
  ]
}

tsconfig.server.json

{
  "extends": "./tsconfig.json",
  "exclude": [
    "src/app"
  ]
}

tsconfig.webpack.json

{
  "extends": "./tsconfig.json",
  "exclude": [
    "src/server"
  ]
}

もっと

レッスンの例

5
basarat

私はこれをここで答えました: tsconfig extension answer

答えの要点:

これを行うには、ベースのtsconfig.jsonファイルを拡張します。

tsconfig extension

ベースtsconfig.jsonのディレクトリを除外しないでください。TypeScriptが入力を解決できるはずです(node_modules/@ typesまたはタイピングモジュールを使用してこれが正しいことを知ってください)

例えば:

configs/base.json:

{
  "compilerOptions": {
    "noImplicitAny": true,
    "strictNullChecks": true
  }
}

tsconfig.json:

{
  "extends": "./configs/base",
  "files": [
    "main.ts",
    "supplemental.ts"
  ]
}

tsconfig.nostrictnull.json:

{
   "extends": "./tsconfig",
   "compilerOptions": {
     "strictNullChecks": false
   }
}
10
weagle08

VSCodeの新しいバージョンはTypeScript 2をサポートし、これはincludeオプションを使用してtsconfig.jsonのglobのサポートを追加します。 http://www.typescriptlang.org/docs/handbook/tsconfig-json.html を参照してください

2
Mike Jerred

FilesGlobを待つ唯一のオプションはありますか?

最適なオプション:

  • 単一のtsconfig.jsonを使用するだけで、bundle(webpackのようなものを使用)client(webpackがピックアップします共有への参照)。

これは私がここで使用しているワークフローです https://github.com/alm-tools/alm ???? (単一のtsconfig.json https://github.com/alm-tools/alm/blob/master/src/tsconfig.json

このワークフローは、alm設計ドキュメントでも説明されています。 https://basarat.gitbooks.io/alm/content/contributing/

0
basarat