@@ -106,15 +106,15 @@ export interface ShareItem {
106
106
shareConfig : SharedConfig ;
107
107
}
108
108
109
- function removePathFromNpmPackage ( packageString : string ) : string {
109
+ function removePathFromNpmPackage ( packageString : string ) : string | undefined {
110
110
// 匹配npm包名的正则表达式,忽略路径部分
111
- const regex = / ^ (?: @ [ ^ / ] + \/ ) ? [ ^ / ] + / ;
111
+ const regex = / ^ (?: @ [ ^ / ] + \/ ) ? \w [ ^ / ] + / ;
112
112
113
113
// 使用正则表达式匹配并提取包名
114
114
const match = packageString . match ( regex ) ;
115
115
116
116
// 返回匹配到的包名,如果没有匹配到则返回原字符串
117
- return match ? match [ 0 ] : packageString ;
117
+ return match ?. [ 0 ] ;
118
118
}
119
119
120
120
function normalizeShareItem (
@@ -130,12 +130,18 @@ function normalizeShareItem(
130
130
strictVersion ?: boolean ;
131
131
}
132
132
) : ShareItem {
133
- let version : string | undefined ;
134
- try {
135
- version = require ( path . join ( removePathFromNpmPackage ( key ) , 'package.json' ) ) . version ;
136
- } catch ( e ) {
137
- console . log ( e ) ;
133
+ let { version, requiredVersion } = typeof shareItem === 'object' ? shareItem : { } ;
134
+ if ( ! version ) {
135
+ const npmPackage = removePathFromNpmPackage ( key ) ;
136
+ if ( npmPackage ) {
137
+ try {
138
+ version = require ( path . join ( npmPackage , 'package.json' ) ) . version ;
139
+ } catch ( e ) {
140
+ console . log ( e ) ;
141
+ }
142
+ }
138
143
}
144
+ requiredVersion ??= version ? `^${ version } ` : '*' ;
139
145
if ( typeof shareItem === 'string' ) {
140
146
return {
141
147
name : shareItem ,
@@ -144,18 +150,18 @@ function normalizeShareItem(
144
150
from : '' ,
145
151
shareConfig : {
146
152
singleton : false ,
147
- requiredVersion : version ? `^ ${ version } ` : '*' ,
153
+ requiredVersion,
148
154
} ,
149
155
} ;
150
156
}
151
157
return {
152
158
name : key ,
153
159
from : '' ,
154
- version : shareItem . version || version ,
160
+ version : shareItem . version ?? version ,
155
161
scope : shareItem . shareScope || 'default' ,
156
162
shareConfig : {
157
163
singleton : shareItem . singleton || false ,
158
- requiredVersion : shareItem . requiredVersion || ( version ? `^ ${ version } ` : '*' ) ,
164
+ requiredVersion,
159
165
strictVersion : ! ! shareItem . strictVersion ,
160
166
} ,
161
167
} ;
@@ -313,10 +319,8 @@ export function getNormalizeModuleFederationOptions() {
313
319
314
320
export function getNormalizeShareItem ( key : string ) {
315
321
const options = getNormalizeModuleFederationOptions ( ) ;
316
- const shareItem =
317
- options . shared [ removePathFromNpmPackage ( key ) ] ||
318
- options . shared [ removePathFromNpmPackage ( key ) + '/' ] ;
319
- return shareItem ;
322
+ const sharedKey = removePathFromNpmPackage ( key ) ?? key ;
323
+ return options . shared [ sharedKey ] ;
320
324
}
321
325
322
326
export function normalizeModuleFederationOptions (
0 commit comments