From 4407395564ea953ef9e6737f9112dbcf0445b2a1 Mon Sep 17 00:00:00 2001 From: Chris Thielen Date: Mon, 16 Aug 2021 17:46:25 -1000 Subject: [PATCH] feat(typescript): add typescript project references --- packages/amazon/tsconfig.json | 12 ++-- packages/app/tsconfig.json | 19 +++++- packages/appengine/tsconfig.json | 12 ++-- packages/azure/tsconfig.json | 12 ++-- packages/cloudfoundry/tsconfig.json | 12 ++-- packages/core/tsconfig.json | 12 ++-- packages/dcos/tsconfig.json | 13 ++-- packages/docker/tsconfig.json | 12 ++-- packages/ecs/tsconfig.json | 14 ++-- packages/eslint-plugin/tsconfig.json | 4 +- packages/google/tsconfig.json | 12 ++-- packages/huaweicloud/tsconfig.json | 12 ++-- packages/kubernetes/tsconfig.json | 12 ++-- packages/oracle/tsconfig.json | 12 ++-- packages/pluginsdk/tsconfig.json | 6 +- packages/presentation/tsconfig.json | 9 +-- packages/tencentcloud/tsconfig.json | 12 ++-- packages/titus/tsconfig.json | 14 ++-- tsconfig.json | 96 ++++++++-------------------- 19 files changed, 168 insertions(+), 139 deletions(-) diff --git a/packages/amazon/tsconfig.json b/packages/amazon/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/amazon/tsconfig.json +++ b/packages/amazon/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index da2ccccec45..0971dc90ea0 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -3,8 +3,21 @@ "compilerOptions": { "baseUrl": "./src", "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../amazon/tsconfig.json" }, + { "path": "../appengine/tsconfig.json" }, + { "path": "../cloudfoundry/tsconfig.json" }, + { "path": "../core/tsconfig.json" }, + { "path": "../docker/tsconfig.json" }, + { "path": "../ecs/tsconfig.json" }, + { "path": "../google/tsconfig.json" }, + { "path": "../kubernetes/tsconfig.json" }, + { "path": "../oracle/tsconfig.json" }, + { "path": "../titus/tsconfig.json" } + ] } diff --git a/packages/appengine/tsconfig.json b/packages/appengine/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/appengine/tsconfig.json +++ b/packages/appengine/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/azure/tsconfig.json b/packages/azure/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/azure/tsconfig.json +++ b/packages/azure/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/cloudfoundry/tsconfig.json b/packages/cloudfoundry/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/cloudfoundry/tsconfig.json +++ b/packages/cloudfoundry/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 276c8f56469..cc995f5a829 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*", "**/*.stories.*"] + "exclude": ["**/*.spec.*", "**/*.stories.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../presentation/tsconfig.json" } + ] } diff --git a/packages/dcos/tsconfig.json b/packages/dcos/tsconfig.json index 3740593a033..51eb394cf44 100644 --- a/packages/dcos/tsconfig.json +++ b/packages/dcos/tsconfig.json @@ -1,9 +1,14 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" }, + { "path": "../docker/tsconfig.json" } + ] } diff --git a/packages/docker/tsconfig.json b/packages/docker/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/docker/tsconfig.json +++ b/packages/docker/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/ecs/tsconfig.json b/packages/ecs/tsconfig.json index 3740593a033..3c1163540dc 100644 --- a/packages/ecs/tsconfig.json +++ b/packages/ecs/tsconfig.json @@ -1,9 +1,15 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../amazon/tsconfig.json" }, + { "path": "../core/tsconfig.json" }, + { "path": "../docker/tsconfig.json" } + ] } diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index 24e4f4d4e19..ad55e35b57a 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -2,12 +2,12 @@ "compilerOptions": { "allowJs": true, "allowSyntheticDefaultImports": true, + "downlevelIteration": true, "esModuleInterop": true, + "lib": ["ES2020"], "module": "CommonJS", "noEmit": true, - "lib": ["ES2020"], "skipLibCheck": true, - "downlevelIteration": true, "types": ["node", "jest"] }, "include": ["rules/**/*.ts", "utils/**/*.ts"], diff --git a/packages/google/tsconfig.json b/packages/google/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/google/tsconfig.json +++ b/packages/google/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/huaweicloud/tsconfig.json b/packages/huaweicloud/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/huaweicloud/tsconfig.json +++ b/packages/huaweicloud/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/kubernetes/tsconfig.json b/packages/kubernetes/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/kubernetes/tsconfig.json +++ b/packages/kubernetes/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/oracle/tsconfig.json b/packages/oracle/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/oracle/tsconfig.json +++ b/packages/oracle/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/pluginsdk/tsconfig.json b/packages/pluginsdk/tsconfig.json index 6e4f2d92b7f..fb114b18b1f 100644 --- a/packages/pluginsdk/tsconfig.json +++ b/packages/pluginsdk/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../tsconfig.tools.base.json", - "exclude": ["scaffold", "dist"], "compilerOptions": { "outDir": "dist", "rootDir": "src", "strict": true - } + }, + "exclude": ["scaffold", "dist"], + "extends": "../tsconfig.tools.base.json" } diff --git a/packages/presentation/tsconfig.json b/packages/presentation/tsconfig.json index aec75e434f5..144028f4d2d 100644 --- a/packages/presentation/tsconfig.json +++ b/packages/presentation/tsconfig.json @@ -1,9 +1,10 @@ { - "extends": "../tsconfig.tools.base.json", - "exclude": ["dist"], "compilerOptions": { "outDir": "dist", "rootDir": "src", - "strict": true - } + "strict": true, + "composite": true + }, + "exclude": ["dist"], + "extends": "../tsconfig.tools.base.json" } diff --git a/packages/tencentcloud/tsconfig.json b/packages/tencentcloud/tsconfig.json index 3740593a033..d1aab8fd247 100644 --- a/packages/tencentcloud/tsconfig.json +++ b/packages/tencentcloud/tsconfig.json @@ -1,9 +1,13 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../core/tsconfig.json" } + ] } diff --git a/packages/titus/tsconfig.json b/packages/titus/tsconfig.json index 3740593a033..3c1163540dc 100644 --- a/packages/titus/tsconfig.json +++ b/packages/titus/tsconfig.json @@ -1,9 +1,15 @@ { - "extends": "../tsconfig.app.base.json", "compilerOptions": { "outDir": "dist", - "rootDir": "./src" + "rootDir": "./src", + "composite": true }, - "include": ["src/**/*.ts", "src/**/*.tsx"], - "exclude": ["**/*.spec.*"] + "exclude": ["**/*.spec.*"], + "extends": "../tsconfig.app.base.json", + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.js"], + "references": [ + { "path": "../amazon/tsconfig.json" }, + { "path": "../core/tsconfig.json" }, + { "path": "../docker/tsconfig.json" } + ] } diff --git a/tsconfig.json b/tsconfig.json index b3b0ea86fdf..98c536c4d78 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,73 +1,27 @@ { - "buildOnSave": false, - "compileOnSave": true, - "compilerOptions": { - "allowJs": true, - "allowSyntheticDefaultImports": true, - "baseUrl": "app/scripts/modules", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "jsx": "react", - "lib": ["es2017", "dom", "ES2018.Promise"], - "moduleResolution": "node", - "module": "esnext", - "noEmitHelpers": false, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": false, // should really get to a place where we can turn this on - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "transpiled", - "paths": { - "@spinnaker/core": ["core/src"], - "core/*": ["core/src/*"], - "core": ["core/src"], - "@spinnaker/docker": ["docker/src"], - "docker/*": ["docker/src/*"], - "docker": ["docker/src"], - "@spinnaker/amazon": ["amazon/src"], - "amazon/*": ["amazon/src/*"], - "amazon": ["amazon/src"], - "@spinnaker/google": ["google/src"], - "google/*": ["google/src/*"], - "google": ["google/src"], - "@spinnaker/appengine": ["appengine/src"], - "appengine/*": ["appengine/src/*"], - "appengine/": ["appengine/src"], - "@spinnaker/kubernetes": ["kubernetes/src"], - "kubernetes/*": ["kubernetes/src/*"], - "kubernetes/": ["kubernetes/src"], - "@spinnaker/oracle": ["oracle/src"], - "oracle/*": ["oracle/src/*"], - "oracle": ["oracle/src"], - "@spinnaker/cloudfoundry": ["cloudfoundry/src"], - "cloudfoundry/*": ["cloudfoundry/src/*"], - "cloudfoundry/": ["cloudfoundry/src"], - "@spinnaker/titus": ["titus/src"], - "titus/*": ["titus/src/*"], - "titus/": ["titus/src"], - "@spinnaker/huaweicloud": ["huaweicloud/src"], - "huaweicloud/*": ["huaweicloud/src/*"], - "huaweicloud": ["huaweicloud/src"], - "@spinnaker/tencentcloud": ["tencentcloud/src"], - "tencentcloud/*": ["tencentcloud/src/*"], - "tencentcloud": ["tencentcloud/src"], - "@spinnaker/azure": ["azure/src"], - "azure/*": ["azure/src/*"], - "azure": ["azure/src"], - "@spinnaker/ecs": ["ecs/src"], - "ecs/*": ["ecs/src/*"], - "ecs": ["ecs/src"] - }, - "pretty": true, - "removeComments": false, - "rootDir": ".", - "skipLibCheck": true, - "sourceMap": true, - "strictNullChecks": false, // should really get to a place where we can turn this on - "target": "es6", - "typeRoots": ["node_modules/@types"] - }, - "exclude": ["build", "node", "node_modules", "transpiled", "**/*.stories.*"], - "include": ["test/helpers/custom-matchers.d.ts", "app/scripts/modules/**/*.ts", "app/scripts/modules/**/*.tsx"] + // This top-level tsconfig.json builds all the referenced paths (Typescript project references) + // https://www.typescriptlang.org/docs/handbook/project-references.html + // build: tsc -b + // watch: tsc -b -w + "files": [], + "references": [ + { "path": "packages/amazon/tsconfig.json" }, + { "path": "packages/app/tsconfig.json" }, + { "path": "packages/appengine/tsconfig.json" }, + { "path": "packages/azure/tsconfig.json" }, + { "path": "packages/cloudfoundry/tsconfig.json" }, + { "path": "packages/core/tsconfig.json" }, + { "path": "packages/dcos/tsconfig.json" }, + { "path": "packages/docker/tsconfig.json" }, + { "path": "packages/ecs/tsconfig.json" }, + { "path": "packages/eslint-plugin/tsconfig.json" }, + { "path": "packages/google/tsconfig.json" }, + { "path": "packages/huaweicloud/tsconfig.json" }, + { "path": "packages/kubernetes/tsconfig.json" }, + { "path": "packages/oracle/tsconfig.json" }, + { "path": "packages/pluginsdk/tsconfig.json" }, + { "path": "packages/presentation/tsconfig.json" }, + { "path": "packages/tencentcloud/tsconfig.json" }, + { "path": "packages/titus/tsconfig.json" } + ] }