From 05e58a52f70fe9e00e14ee0b67e561bf33665b66 Mon Sep 17 00:00:00 2001 From: 2heal1 Date: Thu, 10 Jul 2025 14:59:52 +0800 Subject: [PATCH 1/2] fix(dts-plugin): add expose file imported files to tsconfig files --- .changeset/stale-roses-drive.md | 5 ++++ .../provider-csr/module-federation.config.ts | 2 +- .../src/core/configurations/remotePlugin.ts | 28 +++++++++++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 .changeset/stale-roses-drive.md diff --git a/.changeset/stale-roses-drive.md b/.changeset/stale-roses-drive.md new file mode 100644 index 0000000000..d8f8d60c75 --- /dev/null +++ b/.changeset/stale-roses-drive.md @@ -0,0 +1,5 @@ +--- +'@module-federation/dts-plugin': patch +--- + +fix(dts-plugin): add expose file imported files to tsconfig files diff --git a/apps/modern-component-data-fetch/provider-csr/module-federation.config.ts b/apps/modern-component-data-fetch/provider-csr/module-federation.config.ts index bc0fc0ec85..e8784e9e8b 100644 --- a/apps/modern-component-data-fetch/provider-csr/module-federation.config.ts +++ b/apps/modern-component-data-fetch/provider-csr/module-federation.config.ts @@ -1,4 +1,4 @@ -import { createModuleFederationConfig } from '@module-federation/modern-js'; +import { createModuleFederationConfig } from '@module-federation/rsbuild-plugin'; export default createModuleFederationConfig({ name: 'provider_csr', diff --git a/packages/dts-plugin/src/core/configurations/remotePlugin.ts b/packages/dts-plugin/src/core/configurations/remotePlugin.ts index e82463895e..d4907f7bba 100644 --- a/packages/dts-plugin/src/core/configurations/remotePlugin.ts +++ b/packages/dts-plugin/src/core/configurations/remotePlugin.ts @@ -53,6 +53,18 @@ function getEffectiveRootDir( ); } +const getDependentFiles = ( + rootFiles: string[], + configContent: typescript.ParsedCommandLine, +): string[] => { + const program = typescript.createProgram(rootFiles, configContent.options); + const sourceFiles = program.getSourceFiles(); + const dependentFiles = sourceFiles + .map((file) => file.fileName) + .filter((file) => !file.endsWith('.d.ts')); + return dependentFiles.length ? dependentFiles : rootFiles; +}; + const readTsConfig = ( { tsConfigPath, @@ -121,20 +133,24 @@ const readTsConfig = ( ); const excludeExtensions = ['.mdx', '.md']; - const filesToCompile = [ + const rootFiles = [ ...Object.values(mapComponentsToExpose), + ...additionalFilesToCompile, + ].filter( + (filename) => !excludeExtensions.some((ext) => filename.endsWith(ext)), + ); + + const filesToCompile = [ + ...getDependentFiles(rootFiles, configContent), ...configContent.fileNames.filter( (filename) => filename.endsWith('.d.ts') && !filename.startsWith(outDirWithoutTypesFolder), ), - ...additionalFilesToCompile, - ].filter( - (filename) => !excludeExtensions.some((ext) => filename.endsWith(ext)), - ); + ]; rawTsConfigJson.include = []; - rawTsConfigJson.files = filesToCompile; + rawTsConfigJson.files = [...new Set(filesToCompile)]; rawTsConfigJson.exclude = []; 'references' in rawTsConfigJson && delete rawTsConfigJson.references; From 5756e9a422af5ae4a093984f14fae925177e8723 Mon Sep 17 00:00:00 2001 From: 2heal1 Date: Thu, 10 Jul 2025 16:31:21 +0800 Subject: [PATCH 2/2] fix: only add rootDir files --- packages/dts-plugin/src/core/configurations/remotePlugin.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/dts-plugin/src/core/configurations/remotePlugin.ts b/packages/dts-plugin/src/core/configurations/remotePlugin.ts index d4907f7bba..77d2ad7513 100644 --- a/packages/dts-plugin/src/core/configurations/remotePlugin.ts +++ b/packages/dts-plugin/src/core/configurations/remotePlugin.ts @@ -56,12 +56,13 @@ function getEffectiveRootDir( const getDependentFiles = ( rootFiles: string[], configContent: typescript.ParsedCommandLine, + rootDir: string, ): string[] => { const program = typescript.createProgram(rootFiles, configContent.options); const sourceFiles = program.getSourceFiles(); const dependentFiles = sourceFiles .map((file) => file.fileName) - .filter((file) => !file.endsWith('.d.ts')); + .filter((file) => !file.endsWith('.d.ts') && file.startsWith(rootDir)); return dependentFiles.length ? dependentFiles : rootFiles; }; @@ -141,7 +142,7 @@ const readTsConfig = ( ); const filesToCompile = [ - ...getDependentFiles(rootFiles, configContent), + ...getDependentFiles(rootFiles, configContent, rootDir), ...configContent.fileNames.filter( (filename) => filename.endsWith('.d.ts') &&