@@ -39,6 +39,39 @@ type RuntimeEntrySpec = {
3939 cjs : string ;
4040} ;
4141
42+ function isLocalRuntimePluginPath (
43+ runtimePluginEntry : string ,
44+ cwd = process . cwd ( ) ,
45+ ) {
46+ const isRelativePath =
47+ runtimePluginEntry . startsWith ( './' ) ||
48+ runtimePluginEntry . startsWith ( '../' ) ||
49+ runtimePluginEntry . startsWith ( '.\\' ) ||
50+ runtimePluginEntry . startsWith ( '..\\' ) ;
51+
52+ return (
53+ path . isAbsolute ( runtimePluginEntry ) ||
54+ isRelativePath ||
55+ fs . existsSync ( path . resolve ( cwd , runtimePluginEntry ) )
56+ ) ;
57+ }
58+
59+ function resolveRuntimePluginPath (
60+ runtimePluginEntry : string ,
61+ cwd = process . cwd ( ) ,
62+ resolve : ResolveFn = require . resolve ,
63+ ) {
64+ if ( path . isAbsolute ( runtimePluginEntry ) ) {
65+ return runtimePluginEntry ;
66+ }
67+
68+ try {
69+ return resolve ( runtimePluginEntry , { paths : [ cwd ] } ) ;
70+ } catch {
71+ return path . resolve ( cwd , runtimePluginEntry ) ;
72+ }
73+ }
74+
4275function resolveRuntimeEntry (
4376 spec : RuntimeEntrySpec ,
4477 implementation : string | undefined ,
@@ -169,9 +202,9 @@ class FederationRuntimePlugin {
169202 ? runtimePlugin [ 0 ]
170203 : runtimePlugin ;
171204 const runtimePluginPath = normalizeToPosixPath (
172- path . isAbsolute ( runtimePluginEntry )
173- ? runtimePluginEntry
174- : path . join ( process . cwd ( ) , runtimePluginEntry ) ,
205+ isLocalRuntimePluginPath ( runtimePluginEntry )
206+ ? resolveRuntimePluginPath ( runtimePluginEntry )
207+ : runtimePluginEntry ,
175208 ) ;
176209 const paramsStr =
177210 Array . isArray ( runtimePlugin ) && runtimePlugin . length > 1
0 commit comments