diff --git a/.changeset/tough-yaks-lay.md b/.changeset/tough-yaks-lay.md new file mode 100644 index 00000000000..68facd33739 --- /dev/null +++ b/.changeset/tough-yaks-lay.md @@ -0,0 +1,5 @@ +--- +'@module-federation/managers': patch +--- + +fix(managers): correct manifest shared configuration diff --git a/packages/managers/__tests__/SharedManager.spec.ts b/packages/managers/__tests__/SharedManager.spec.ts index 334181e2d88..75bfe01aba6 100644 --- a/packages/managers/__tests__/SharedManager.spec.ts +++ b/packages/managers/__tests__/SharedManager.spec.ts @@ -16,6 +16,7 @@ describe('SharedManager', () => { name: '@module-federation/shared-managers-test', shared: { react: {}, + 'react-dom': { singleton: false, requiredVersion: '^18.0.0' }, }, }; const sharedManager = new SharedManager(); @@ -33,6 +34,7 @@ describe('SharedManager', () => { ].includes(key), ), ).toEqual(true); + expect(sharedManager.normalizedOptions['react-dom']).toMatchSnapshot(); }); it('sharedPluginOptions', () => { diff --git a/packages/managers/__tests__/__snapshots__/SharedManager.spec.ts.snap b/packages/managers/__tests__/__snapshots__/SharedManager.spec.ts.snap new file mode 100644 index 00000000000..51661a8aef5 --- /dev/null +++ b/packages/managers/__tests__/__snapshots__/SharedManager.spec.ts.snap @@ -0,0 +1,12 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`SharedManager normalizedOptions 1`] = ` +{ + "eager": false, + "name": "react-dom", + "requiredVersion": "^18.0.0", + "shareScope": "default", + "singleton": false, + "version": "18.3.1", +} +`; diff --git a/packages/managers/src/ContainerManager.ts b/packages/managers/src/ContainerManager.ts index 9b2239f8307..b97bc041299 100644 --- a/packages/managers/src/ContainerManager.ts +++ b/packages/managers/src/ContainerManager.ts @@ -5,7 +5,7 @@ import type { ManifestModuleInfos, moduleFederationPlugin, } from '@module-federation/sdk'; -import { getBuildVersion, parseOptions } from './utils'; +import { parseOptions } from './utils'; import type { EntryObject } from 'webpack'; import { BasicPluginOptionsManager } from './BasicPluginOptionsManager'; @@ -65,7 +65,7 @@ class ContainerManager extends BasicPluginOptionsManager { '__federation_expose_Component' : ['src/Buttton'] } get exposeFileNameImportMap(): Record { @@ -81,30 +81,36 @@ class ContainerManager extends BasicPluginOptionsManager { - const [_exposeKey, exposeObj] = item; - const { name, import: importPath } = exposeObj; - sum[name] = importPath; - return sum; - }, {}); + return parsedOptions.reduce( + (sum, item) => { + const [_exposeKey, exposeObj] = item; + const { name, import: importPath } = exposeObj; + sum[name] = importPath; + return sum; + }, + {} as Record, + ); } // { '.' : './src/Button.jsx' } => { '.' : ['src/Button'] } - get exposeObject(): Record { + get exposeObject(): Record { const parsedOptions = this._parseOptions(); - return parsedOptions.reduce((sum, item) => { - const [exposeKey, exposeObject] = item; - sum[exposeKey] = []; - exposeObject.import.forEach((item) => { - const relativePath = path.relative( - '.', - item.replace(path.extname(item), ''), - ); - sum[exposeKey].push(relativePath); - }); - return sum; - }, {}); + return parsedOptions.reduce( + (sum, item) => { + const [exposeKey, exposeObject] = item; + sum[exposeKey] = []; + exposeObject.import.forEach((item) => { + const relativePath = path.relative( + '.', + item.replace(path.extname(item), ''), + ); + sum[exposeKey].push(relativePath); + }); + return sum; + }, + {} as Record, + ); } // { '.' : './src/Button.jsx' } => ['./src/Button.jsx'] diff --git a/packages/managers/src/PKGJsonManager.ts b/packages/managers/src/PKGJsonManager.ts index 416a0021c1b..f1605bde05b 100644 --- a/packages/managers/src/PKGJsonManager.ts +++ b/packages/managers/src/PKGJsonManager.ts @@ -1,4 +1,5 @@ import path from 'path'; +// @ts-ignore this pkg miss types import finder from 'find-pkg'; import fs from 'fs'; import { MFModuleType, logger } from '@module-federation/sdk'; diff --git a/packages/managers/src/RemoteManager.ts b/packages/managers/src/RemoteManager.ts index a54a8ecac7e..a108bae157d 100644 --- a/packages/managers/src/RemoteManager.ts +++ b/packages/managers/src/RemoteManager.ts @@ -77,14 +77,17 @@ class RemoteManager extends BasicPluginOptionsManager { - return Object.keys(this.normalizedOptions).reduce((sum, remoteAlias) => { - const remoteInfo = this.normalizedOptions[remoteAlias]; - sum[remoteAlias] = composeKeyWithSeparator( - remoteInfo.name, - 'entry' in remoteInfo ? remoteInfo.entry : remoteInfo.version, - ); - return sum; - }, {}); + return Object.keys(this.normalizedOptions).reduce( + (sum, remoteAlias) => { + const remoteInfo = this.normalizedOptions[remoteAlias]; + sum[remoteAlias] = composeKeyWithSeparator( + remoteInfo.name, + 'entry' in remoteInfo ? remoteInfo.entry : remoteInfo.version, + ); + return sum; + }, + {} as Record, + ); } get remotes(): moduleFederationPlugin.ModuleFederationPluginOptions['remotes'] { diff --git a/packages/managers/src/SharedManager.ts b/packages/managers/src/SharedManager.ts index 329f3f06a2e..492a5d396d0 100644 --- a/packages/managers/src/SharedManager.ts +++ b/packages/managers/src/SharedManager.ts @@ -1,3 +1,4 @@ +// @ts-ignore this pkg miss types import findPkg from 'find-pkg'; import path from 'path'; import fs from 'fs-extra'; @@ -40,7 +41,7 @@ class SharedManager extends BasicPluginOptionsManager { const [sharedName, sharedOptions] = item; const pkgInfo = this.findPkg(sharedName, sharedOptions); - const sharedConfig = this.transformSharedConfig( - sharedOptions[sharedName], - ); + const sharedConfig = this.transformSharedConfig(sharedOptions); normalizedShared[sharedName] = { ...sharedConfig, requiredVersion: diff --git a/packages/managers/tsconfig.json b/packages/managers/tsconfig.json index 77578113c20..640447f812f 100644 --- a/packages/managers/tsconfig.json +++ b/packages/managers/tsconfig.json @@ -14,7 +14,7 @@ "skipLibCheck": true, "skipDefaultLibCheck": true, "declaration": true, - "noImplicitAny": false + "noImplicitAny": true }, "files": [], "include": [],