diff --git a/README.md b/README.md index 54a535be..a31c6a25 100644 --- a/README.md +++ b/README.md @@ -466,7 +466,7 @@ function __federation_method_setRemote(name: string, config: IRemoteConfig): voi interface IRemoteConfig { url: (() => Promise) | string; format: "esm" | "systemjs" | "var"; - from: "vite" | "webpack; + from: "vite" | "webpack"; } ``` diff --git a/packages/lib/src/dev/remote-development.ts b/packages/lib/src/dev/remote-development.ts index 15e57381..cc123259 100644 --- a/packages/lib/src/dev/remote-development.ts +++ b/packages/lib/src/dev/remote-development.ts @@ -76,7 +76,7 @@ const loadJS = async (url, fn) => { } function get(name, ${REMOTE_FROM_PARAMETER}){ return import(/* @vite-ignore */ name).then(module => ()=> { - if (${REMOTE_FROM_PARAMETER} === 'webpack') { + if ((globalThis.__federation_shared_remote_from__ ?? ${REMOTE_FROM_PARAMETER}) === 'webpack') { return Object.prototype.toString.call(module).indexOf('Module') > -1 && module.default ? module.default : module } return module @@ -141,7 +141,7 @@ function __federation_method_wrapDefault(module ,need){ return module; } -function __federation_method_getRemote(remoteName, componentName){ +function __federation_method_getRemote(remoteName, componentName) { return __federation_method_ensure(remoteName).then((remote) => remote.get(componentName).then(factory => factory())); } @@ -395,7 +395,9 @@ export {__federation_method_ensure, __federation_method_getRemote , __federation const idx = moduleFilePath.indexOf(cwdPath) const relativePath = - idx === 0 ? posix.join(base, moduleFilePath.slice(cwdPath.length)) : null + idx === 0 + ? posix.join(base, moduleFilePath.slice(cwdPath.length)) + : null const sharedName = item[0] const obj = item[1] @@ -406,7 +408,7 @@ export {__federation_method_ensure, __federation_method_getRemote , __federation const url = origin ? `'${origin}${pathname}'` : `window.location.origin+'${pathname}'` - str += `get:()=> get(${url}, ${REMOTE_FROM_PARAMETER})` + str += `get:() => get(${url}, ${REMOTE_FROM_PARAMETER})` res.push(`'${sharedName}':{'${obj.version}':{${str}}}`) } } diff --git a/packages/lib/src/prod/remote-production.ts b/packages/lib/src/prod/remote-production.ts index 3476286b..dacefc78 100644 --- a/packages/lib/src/prod/remote-production.ts +++ b/packages/lib/src/prod/remote-production.ts @@ -129,7 +129,7 @@ export function prodRemotePlugin( function get(name, ${REMOTE_FROM_PARAMETER}) { return __federation_import(name).then(module => () => { - if (${REMOTE_FROM_PARAMETER} === 'webpack') { + if ((globalThis.__federation_shared_remote_from__ ?? ${REMOTE_FROM_PARAMETER}) === 'webpack') { return Object.prototype.toString.call(module).indexOf('Module') > -1 && module.default ? module.default : module } return module @@ -147,11 +147,12 @@ export function prodRemotePlugin( } const wrapShareModule = ${REMOTE_FROM_PARAMETER} => { + globalThis.__federation_shared_remote_from__ = ${REMOTE_FROM_PARAMETER}; return merge({ ${getModuleMarker('shareScope')} }, (globalThis.__federation_shared__ || {})['${shareScope}'] || {}); } - + async function __federation_import(name) { currentImports[name] ??= import(name) return currentImports[name] @@ -168,7 +169,7 @@ export function prodRemotePlugin( const callback = () => { if (!remote.inited) { remote.lib = window[remoteId]; - remote.lib.init(wrapShareModule(remote.from)) + remote.lib.init(wrapShareModule(remote.from)); remote.inited = true; } resolve(remote.lib); @@ -291,7 +292,7 @@ export function prodRemotePlugin( let str = '' if (typeof obj === 'object') { const fileUrl = `import.meta.ROLLUP_FILE_URL_${obj.emitFile}` - str += `get:()=>get(${fileUrl}, ${REMOTE_FROM_PARAMETER}), loaded:1` + str += `get:() => get(${fileUrl}, ${REMOTE_FROM_PARAMETER}), loaded:1` res.push(`'${arr[0]}':{'${obj.version}':{${str}}}`) } })