From 9aece446351a4bdf343f0b1a8c97c0cb9f6f9c1f Mon Sep 17 00:00:00 2001 From: Gerrit Birkeland Date: Mon, 10 Oct 2022 12:13:21 -0600 Subject: [PATCH] Add support for "tsconfig" in monorepo config Resolves #2061 --- CHANGELOG.md | 4 ++++ scripts/create_release.js | 4 ++-- src/lib/utils/entry-point.ts | 3 ++- src/lib/utils/package-manifest.ts | 1 + src/test/slow/entry-point.test.ts | 27 +++++++++++++++++++++++++++ 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae805cb97..5b327196f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Unreleased +### Features + +- Added support for specifying the tsconfig.json file in packages mode with `{ "typedoc": { "tsconfig": "tsconfig.lib.json" }}` in package.json, #2061. + ### Bug Fixes - Private parameter properties will no longer be ignored, #2064. diff --git a/scripts/create_release.js b/scripts/create_release.js index 75f5fa766..cc059a93f 100644 --- a/scripts/create_release.js +++ b/scripts/create_release.js @@ -65,7 +65,7 @@ async function main() { const currentVersion = `v${ require(join(__dirname, "..", "package.json")).version }`; - const [_major, _minor, patch] = currentVersion.substr(1).split("."); + const [_major, _minor, patch] = currentVersion.substring(1).split("."); if (lastTag == currentVersion) { console.log("No version change, not publishing."); @@ -98,7 +98,7 @@ async function main() { fullChangelog = "# Unreleased\n\n" + `${heading} ${currentVersion} (${dateStr})` + - fullChangelog.substr(start); + fullChangelog.substring(start); start = fullChangelog.indexOf(`${heading} ${currentVersion}`); await writeFile(CHANGELOG_MD, fullChangelog); diff --git a/src/lib/utils/entry-point.ts b/src/lib/utils/entry-point.ts index 93a6c477e..2e32ecf91 100644 --- a/src/lib/utils/entry-point.ts +++ b/src/lib/utils/entry-point.ts @@ -364,7 +364,8 @@ function getEntryPointsForPackages( } const tsconfigFile = ts.findConfigFile( packageEntryPoint, - ts.sys.fileExists + ts.sys.fileExists, + typedocPackageConfig?.tsconfig ); if (tsconfigFile === undefined) { logger.error( diff --git a/src/lib/utils/package-manifest.ts b/src/lib/utils/package-manifest.ts index ed57cabc1..0ec0cdc15 100644 --- a/src/lib/utils/package-manifest.ts +++ b/src/lib/utils/package-manifest.ts @@ -41,6 +41,7 @@ const typedocPackageManifestConfigSchema = { displayName: optional(String), entryPoint: optional(String), readmeFile: optional(String), + tsconfig: optional(String), [additionalProperties]: false, }; diff --git a/src/test/slow/entry-point.test.ts b/src/test/slow/entry-point.test.ts index 7b75ba664..85c6aba81 100644 --- a/src/test/slow/entry-point.test.ts +++ b/src/test/slow/entry-point.test.ts @@ -111,4 +111,31 @@ describe("Entry Points", () => { equal(entryPoints.length, 1); equal(entryPoints[0].version, void 0); }); + + it("Supports custom tsconfig files #2061", () => { + const fixture = tempdirProject({ rootDir: tmpdir() }); + fixture.addJsonFile("tsconfig.lib.json", { + include: ["."], + }); + fixture.addJsonFile("package.json", { + main: "index.ts", + typedoc: { + tsconfig: "tsconfig.lib.json", + }, + }); + fixture.addFile("index.ts", "export function fromIndex() {}"); + fixture.write(); + + app.bootstrap({ + tsconfig: tsconfig, + entryPoints: [fixture.cwd], + entryPointStrategy: EntryPointStrategy.Packages, + }); + + const entryPoints = app.getEntryPoints(); + fixture.rm(); + ok(entryPoints); + equal(entryPoints.length, 1); + equal(entryPoints[0].version, void 0); + }); });