@@ -58,20 +58,24 @@ module.exports = class AliasPlugin {
5858 . tapAsync ( "AliasPlugin" , ( request , resolveContext , callback ) => {
5959 const innerRequest = request . request || request . path ;
6060 if ( ! innerRequest ) return callback ( ) ;
61+
6162 forEachBail (
6263 this . options ,
6364 ( item , callback ) => {
6465 /** @type {boolean } */
6566 let shouldStop = false ;
66- if (
67+
68+ const matchRequest =
6769 innerRequest === item . name ||
6870 ( ! item . onlyModule &&
6971 ( request . request
7072 ? innerRequest . startsWith ( `${ item . name } /` )
71- : isSubPath ( innerRequest , item . name ) ) )
72- ) {
73- /** @type {string } */
74- const remainingRequest = innerRequest . slice ( item . name . length ) ;
73+ : isSubPath ( innerRequest , item . name ) ) ) ;
74+
75+ const splitName = item . name . split ( "*" ) ;
76+ const matchWildcard = ! item . onlyModule && splitName . length === 2 ;
77+
78+ if ( matchRequest || matchWildcard ) {
7579 /**
7680 * @param {Alias } alias alias
7781 * @param {(err?: null|Error, result?: null|ResolveRequest) => void } callback callback
@@ -90,12 +94,34 @@ module.exports = class AliasPlugin {
9094 }
9195 return callback ( null , ignoreObj ) ;
9296 }
97+
98+ let newRequestStr ;
99+
100+ const [ prefix , suffix ] = splitName ;
101+ if (
102+ matchWildcard &&
103+ innerRequest . startsWith ( prefix ) &&
104+ innerRequest . endsWith ( suffix )
105+ ) {
106+ const match = innerRequest . slice (
107+ prefix . length ,
108+ innerRequest . length - suffix . length
109+ ) ;
110+ newRequestStr = item . alias . toString ( ) . replace ( "*" , match ) ;
111+ }
112+
93113 if (
114+ matchRequest &&
94115 innerRequest !== alias &&
95116 ! innerRequest . startsWith ( alias + "/" )
96117 ) {
118+ /** @type {string } */
119+ const remainingRequest = innerRequest . slice ( item . name . length ) ;
120+ newRequestStr = alias + remainingRequest ;
121+ }
122+
123+ if ( newRequestStr !== undefined ) {
97124 shouldStop = true ;
98- const newRequestStr = alias + remainingRequest ;
99125 /** @type {ResolveRequest } */
100126 const obj = {
101127 ...request ,
@@ -122,6 +148,7 @@ module.exports = class AliasPlugin {
122148 }
123149 return callback ( ) ;
124150 } ;
151+
125152 /**
126153 * @param {null|Error } [err] error
127154 * @param {null|ResolveRequest } [result] result
@@ -135,6 +162,7 @@ module.exports = class AliasPlugin {
135162 if ( shouldStop ) return callback ( null , null ) ;
136163 return callback ( ) ;
137164 } ;
165+
138166 if ( Array . isArray ( item . alias ) ) {
139167 return forEachBail (
140168 item . alias ,
@@ -145,6 +173,7 @@ module.exports = class AliasPlugin {
145173 return resolveWithAlias ( item . alias , stoppingCallback ) ;
146174 }
147175 }
176+
148177 return callback ( ) ;
149178 } ,
150179 callback
0 commit comments