From 7154aab98b14267128afc8f0cc24ebf0a21ac4d4 Mon Sep 17 00:00:00 2001 From: Vincent De Smet Date: Thu, 4 Jul 2024 14:30:04 +0700 Subject: [PATCH] fix: Jsii projects don't have tsconfig.json Jsii generates tsconfig.json --- src/turbo.ts | 11 ++++++++--- test/sub-projects.test.ts | 33 +++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/turbo.ts b/src/turbo.ts index 56260b8..56219eb 100644 --- a/src/turbo.ts +++ b/src/turbo.ts @@ -4,6 +4,7 @@ import { typescript, Project, javascript, + cdk, JsonFile, YamlFile, JsonPatch, @@ -355,9 +356,13 @@ export class TurborepoProject extends typescript.TypeScriptProject { .filter(({ name }) => packageNames.includes(name)) .map(({ name }) => packageNameSubProjectMap[name]); - const references = depProjects - .map(({ outdir }) => path.relative(subProject.outdir, outdir)) - .map((p) => ({ path: p })); + const references = []; + for (const depProject of depProjects) { + let relPath = path.relative(subProject.outdir, depProject.outdir); + if (ProjectUtils.isNamedInstanceOf(depProject, cdk.JsiiProject)) + relPath = path.join(relPath, "tsconfig.dev.json"); + references.push({ path: relPath }); + } const pathMappings: Record = {}; for (const depProject of depProjects) { diff --git a/test/sub-projects.test.ts b/test/sub-projects.test.ts index 76f42c8..b97b01b 100644 --- a/test/sub-projects.test.ts +++ b/test/sub-projects.test.ts @@ -2,7 +2,7 @@ import { javascript } from "projen"; import { synthProjectSnapshot, createSubProject, - createJSIISubProject, + createJSIISubProject as createJsiiSubProject, createProject, parseYaml, } from "./util"; @@ -91,7 +91,7 @@ describe("TurborepoProject", () => { outdir: subProjectBarDir, }); const subProjectFooDir = "packages/foo"; - const subProjectFoo = createJSIISubProject({ + const subProjectFoo = createJsiiSubProject({ parent: project, outdir: subProjectFooDir, deps: [subProjectBar.package.packageName], @@ -147,6 +147,35 @@ describe("TurborepoProject", () => { ]); }); + it("should add JsiiProject references when turned on", () => { + expect.assertions(1); + + const project = createProject({ + projectReferences: true, + }); + + const subProjectBarDir = "packages/bar"; + const subProjectBar = createJsiiSubProject({ + parent: project, + outdir: subProjectBarDir, + }); + + const subProjectBazDir = "packages/baz"; + createSubProject({ + parent: project, + outdir: subProjectBazDir, + deps: [subProjectBar.package.packageName], + }); + + const synth = synthProjectSnapshot(project); + + expect(synth["packages/baz/tsconfig.json"].references).toStrictEqual([ + { + path: "../bar/tsconfig.dev.json", // JSII projects only have tsconfig.json + }, + ]); + }); + it("should add moduleNameMapper for jest", () => { expect.assertions(1);