From 326fce53417b98f07375c24908f8a4b3cf61e23a Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Thu, 3 Oct 2024 17:49:37 -0300 Subject: [PATCH 1/3] fix: use provided version --- .../normalizeModuleFederationOption.test.ts | 2 +- src/utils/normalizeModuleFederationOptions.ts | 34 +++++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/utils/__tests__/normalizeModuleFederationOption.test.ts b/src/utils/__tests__/normalizeModuleFederationOption.test.ts index a0134e1..dc396d1 100644 --- a/src/utils/__tests__/normalizeModuleFederationOption.test.ts +++ b/src/utils/__tests__/normalizeModuleFederationOption.test.ts @@ -159,7 +159,7 @@ describe('normalizeModuleFederationOption', () => { scope: 'default', version: '1.0.0', shareConfig: { - requiredVersion: '*', + requiredVersion: '^1.0.0', singleton: false, strictVersion: false, }, diff --git a/src/utils/normalizeModuleFederationOptions.ts b/src/utils/normalizeModuleFederationOptions.ts index b6d54ed..2ab2996 100644 --- a/src/utils/normalizeModuleFederationOptions.ts +++ b/src/utils/normalizeModuleFederationOptions.ts @@ -106,15 +106,15 @@ export interface ShareItem { shareConfig: SharedConfig; } -function removePathFromNpmPackage(packageString: string): string { +function removePathFromNpmPackage(packageString: string): string | undefined { // 匹配npm包名的正则表达式,忽略路径部分 - const regex = /^(?:@[^/]+\/)?[^/]+/; + const regex = /^(?:@[^/]+\/)?\w[^/]+/; // 使用正则表达式匹配并提取包名 const match = packageString.match(regex); // 返回匹配到的包名,如果没有匹配到则返回原字符串 - return match ? match[0] : packageString; + return match?.[0]; } function normalizeShareItem( @@ -130,12 +130,18 @@ function normalizeShareItem( strictVersion?: boolean; } ): ShareItem { - let version: string | undefined; - try { - version = require(path.join(removePathFromNpmPackage(key), 'package.json')).version; - } catch (e) { - console.log(e); + let { version, requiredVersion } = typeof shareItem === 'object' ? shareItem : {}; + if (!version) { + const npmPackage = removePathFromNpmPackage(key); + if (npmPackage) { + try { + version = require(path.join(npmPackage, 'package.json')).version; + } catch (e) { + console.log(e); + } + } } + requiredVersion ??= version ? `^${version}` : '*'; if (typeof shareItem === 'string') { return { name: shareItem, @@ -144,18 +150,18 @@ function normalizeShareItem( from: '', shareConfig: { singleton: false, - requiredVersion: version ? `^${version}` : '*', + requiredVersion, }, }; } return { name: key, from: '', - version: shareItem.version || version, + version: shareItem.version ?? version, scope: shareItem.shareScope || 'default', shareConfig: { singleton: shareItem.singleton || false, - requiredVersion: shareItem.requiredVersion || (version ? `^${version}` : '*'), + requiredVersion, strictVersion: !!shareItem.strictVersion, }, }; @@ -313,10 +319,8 @@ export function getNormalizeModuleFederationOptions() { export function getNormalizeShareItem(key: string) { const options = getNormalizeModuleFederationOptions(); - const shareItem = - options.shared[removePathFromNpmPackage(key)] || - options.shared[removePathFromNpmPackage(key) + '/']; - return shareItem; + const sharedKey = removePathFromNpmPackage(key) ?? key; + return options.shared[sharedKey]; } export function normalizeModuleFederationOptions( From 7fc1b6cf45da80635c26ead5126bcb415ca6c441 Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Fri, 4 Oct 2024 15:13:11 -0300 Subject: [PATCH 2/3] Update normalizeModuleFederationOptions.ts --- src/utils/normalizeModuleFederationOptions.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utils/normalizeModuleFederationOptions.ts b/src/utils/normalizeModuleFederationOptions.ts index 2ab2996..5f39ccb 100644 --- a/src/utils/normalizeModuleFederationOptions.ts +++ b/src/utils/normalizeModuleFederationOptions.ts @@ -319,8 +319,7 @@ export function getNormalizeModuleFederationOptions() { export function getNormalizeShareItem(key: string) { const options = getNormalizeModuleFederationOptions(); - const sharedKey = removePathFromNpmPackage(key) ?? key; - return options.shared[sharedKey]; + return options.shared[key]; } export function normalizeModuleFederationOptions( From c75dab7e1156388e350ecd92dac9c837e5511a54 Mon Sep 17 00:00:00 2001 From: Marcelo Shima Date: Fri, 4 Oct 2024 15:17:14 -0300 Subject: [PATCH 3/3] Update normalizeModuleFederationOptions.ts --- src/utils/normalizeModuleFederationOptions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/normalizeModuleFederationOptions.ts b/src/utils/normalizeModuleFederationOptions.ts index 5f39ccb..d3cc282 100644 --- a/src/utils/normalizeModuleFederationOptions.ts +++ b/src/utils/normalizeModuleFederationOptions.ts @@ -130,7 +130,7 @@ function normalizeShareItem( strictVersion?: boolean; } ): ShareItem { - let { version, requiredVersion } = typeof shareItem === 'object' ? shareItem : {}; + let { version, requiredVersion }: any = typeof shareItem === 'object' ? shareItem : {}; if (!version) { const npmPackage = removePathFromNpmPackage(key); if (npmPackage) {