From dbb7cd658bd635ed03d4be825e483c6f070e5cd0 Mon Sep 17 00:00:00 2001 From: "zhanghang.heal" Date: Thu, 20 Nov 2025 19:55:47 +0800 Subject: [PATCH] fix(dts-plugin): api type file should not related with manifest config --- .changeset/fuzzy-lamps-confess.md | 6 ++++ packages/dts-plugin/src/core/lib/utils.ts | 20 ----------- .../src/plugins/GenerateTypesPlugin.ts | 34 ++++--------------- packages/manifest/src/utils.ts | 9 ++--- 4 files changed, 15 insertions(+), 54 deletions(-) create mode 100644 .changeset/fuzzy-lamps-confess.md diff --git a/.changeset/fuzzy-lamps-confess.md b/.changeset/fuzzy-lamps-confess.md new file mode 100644 index 00000000000..b49ad16ad74 --- /dev/null +++ b/.changeset/fuzzy-lamps-confess.md @@ -0,0 +1,6 @@ +--- +'@module-federation/dts-plugin': patch +'@module-federation/manifest': patch +--- + +fix(dts-plugin): api type file should not related with manifest config diff --git a/packages/dts-plugin/src/core/lib/utils.ts b/packages/dts-plugin/src/core/lib/utils.ts index cb35a881a01..5eb517e66b9 100644 --- a/packages/dts-plugin/src/core/lib/utils.ts +++ b/packages/dts-plugin/src/core/lib/utils.ts @@ -33,18 +33,14 @@ export const validateOptions = (options: HostOptions) => { }; export function retrieveTypesAssetsInfo(options: RemoteOptions) { - const { moduleFederationConfig } = options; let apiTypesPath = ''; let zipTypesPath = ''; - let zipPrefix = ''; - try { const { tsConfig, remoteOptions, mapComponentsToExpose } = retrieveRemoteConfig(options); if (!Object.keys(mapComponentsToExpose).length || !tsConfig.files.length) { return { - zipPrefix, apiTypesPath, zipTypesPath, zipName: '', @@ -58,22 +54,7 @@ export function retrieveTypesAssetsInfo(options: RemoteOptions) { apiTypesPath = retrieveMfAPITypesPath(tsConfig, remoteOptions); } - if ( - typeof moduleFederationConfig.manifest === 'object' && - moduleFederationConfig.manifest.filePath - ) { - zipPrefix = moduleFederationConfig.manifest.filePath; - } else if ( - typeof moduleFederationConfig.manifest === 'object' && - moduleFederationConfig.manifest.fileName - ) { - zipPrefix = path.dirname(moduleFederationConfig.manifest.fileName); - } else if (moduleFederationConfig.filename) { - zipPrefix = path.dirname(moduleFederationConfig.filename); - } - return { - zipPrefix, apiTypesPath, zipTypesPath, zipName: path.basename(zipTypesPath), @@ -82,7 +63,6 @@ export function retrieveTypesAssetsInfo(options: RemoteOptions) { } catch (err) { console.error(ansiColors.red(`Unable to compile federated types, ${err}`)); return { - zipPrefix, apiTypesPath: '', zipTypesPath: '', zipName: '', diff --git a/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts b/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts index 7a933b54440..a8b4aaeed5f 100644 --- a/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts +++ b/packages/dts-plugin/src/plugins/GenerateTypesPlugin.ts @@ -162,29 +162,15 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { logger.debug('start generating types...'); await generateTypesAPI({ dtsManagerOptions }); logger.debug('generate types success!'); - const config = dtsManagerOptions.remote.moduleFederationConfig; - let zipPrefix = ''; - if (typeof config.manifest === 'object' && config.manifest.filePath) { - zipPrefix = config.manifest.filePath; - } else if ( - typeof config.manifest === 'object' && - config.manifest.fileName - ) { - zipPrefix = path.dirname(config.manifest.fileName); - } else if (config.filename) { - zipPrefix = path.dirname(config.filename); - } if (isProd) { - const zipAssetName = path.join(zipPrefix, zipName); - const apiAssetName = path.join(zipPrefix, apiFileName); if ( zipTypesPath && - !compilation.getAsset(zipAssetName) && + !compilation.getAsset(zipName) && fs.existsSync(zipTypesPath) ) { compilation.emitAsset( - zipAssetName, + zipName, new compiler.webpack.sources.RawSource( fs.readFileSync(zipTypesPath), false, @@ -194,11 +180,11 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { if ( apiTypesPath && - !compilation.getAsset(apiAssetName) && + !compilation.getAsset(apiFileName) && fs.existsSync(apiTypesPath) ) { compilation.emitAsset( - apiAssetName, + apiFileName, new compiler.webpack.sources.RawSource( fs.readFileSync(apiTypesPath), false, @@ -212,11 +198,7 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { }; if (zipTypesPath && fs.existsSync(zipTypesPath)) { const zipContent = fs.readFileSync(zipTypesPath); - const zipOutputPath = path.join( - compiler.outputPath, - zipPrefix, - zipName, - ); + const zipOutputPath = path.join(compiler.outputPath, zipName); await new Promise((resolve, reject) => { compiler.outputFileSystem.mkdir( path.dirname(zipOutputPath), @@ -248,11 +230,7 @@ export class GenerateTypesPlugin implements WebpackPluginInstance { if (apiTypesPath && fs.existsSync(apiTypesPath)) { const apiContent = fs.readFileSync(apiTypesPath); - const apiOutputPath = path.join( - compiler.outputPath, - zipPrefix, - apiFileName, - ); + const apiOutputPath = path.join(compiler.outputPath, apiFileName); await new Promise((resolve, reject) => { compiler.outputFileSystem.mkdir( path.dirname(apiOutputPath), diff --git a/packages/manifest/src/utils.ts b/packages/manifest/src/utils.ts index fca0717d340..c939de5a6ec 100644 --- a/packages/manifest/src/utils.ts +++ b/packages/manifest/src/utils.ts @@ -259,20 +259,17 @@ export function getTypesMetaInfo( return defaultTypesMetaInfo; } - const { apiFileName, zipName, zipPrefix } = retrieveTypesAssetsInfo({ + const { apiFileName, zipName } = retrieveTypesAssetsInfo({ ...normalizedRemote, context, moduleFederationConfig: pluginOptions, }); - const zip = path.join(zipPrefix, zipName); - const api = path.join(zipPrefix, apiFileName); - return { path: '', name: '', - zip, - api, + zip: zipName, + api: apiFileName, }; } catch (err) { logger.warn(