diff --git a/packages/docgen/src/compiler.ts b/packages/docgen/src/compiler.ts index 61837ad1f8..74ba1db974 100644 --- a/packages/docgen/src/compiler.ts +++ b/packages/docgen/src/compiler.ts @@ -43,14 +43,14 @@ function loadOptions(path: string): ts.CompilerOptions { async function main() { const rootDir = resolve(__dirname, '..'); - const srcDir = resolve(rootDir, 'src'); - const entrypoint = resolve(srcDir, 'index.js'); - const apiRefsDir = resolve(rootDir, 'docgen', 'build', 'api-refs'); + const srcDir = resolve(rootDir, '..', 'core-api', 'src'); + const entrypoint = resolve(srcDir, 'index.ts'); + const apiRefsDir = resolve(rootDir, 'dist'); const mkdocsYaml = resolve(apiRefsDir, 'mkdocs.yml'); process.chdir(rootDir); - const options = loadOptions('../tsconfig.json'); + const options = loadOptions('../../../tsconfig.json'); delete options.moduleResolution; options.removeComments = false; @@ -60,11 +60,12 @@ async function main() { const typeLocator = TypeLocator.fromProgram(program); - const { apis } = typeLocator.findExportedInstances({ - apis: typeLocator.getExportedType( - resolve(srcDir, 'core', 'api', 'ApiRef.ts'), - ), - }); + const { apis } = typeLocator.findExportedInstances( + { + apis: typeLocator.getExportedType(entrypoint, 'createApiRef'), + }, + [srcDir], + ); const apiDocGenerator = ApiDocGenerator.fromProgram(program, rootDir, srcDir); diff --git a/packages/docgen/src/docgen/TypeLocator.ts b/packages/docgen/src/docgen/TypeLocator.ts index b960640559..038a01d35e 100644 --- a/packages/docgen/src/docgen/TypeLocator.ts +++ b/packages/docgen/src/docgen/TypeLocator.ts @@ -54,6 +54,7 @@ export default class TypeLocator { findExportedInstances( typeLookupTable: { [key in T]: ts.Type }, + roots: string[], ): { [key in T]: ExportedInstance[] } { const docMap = new Map(); for (const type of Object.values(typeLookupTable)) { @@ -61,6 +62,10 @@ export default class TypeLocator { } this.program.getSourceFiles().forEach(source => { + const inRoot = roots.some(root => source.fileName.startsWith(root)); + if (!inRoot) { + return; + } ts.forEachChild(source, node => { const decl = this.getExportedConstructorDeclaration(node); if (!decl || !docMap.has(decl.constructorType)) {