@@ -78,18 +78,27 @@ function normalizeRoot(optsRoot, cwd) {
7878 } , [ ] ) ;
7979}
8080
81- function getAliasPair ( key , value ) {
82- const parts = value . split ( '\\\\' ) ;
81+ function getAliasTarget ( key , isKeyRegExp ) {
82+ const regExpPattern = isKeyRegExp ? key : `^${ key } (/.*|)$` ;
83+ return new RegExp ( regExpPattern ) ;
84+ }
85+
86+ function getAliasSubstitute ( value , isKeyRegExp ) {
87+ if ( typeof value === 'function' ) {
88+ return value ;
89+ }
8390
84- function substitute ( execResult ) {
85- return parts
86- . map ( part =>
87- part . replace ( / \\ \d + / g, number => execResult [ number . slice ( 1 ) ] || '' ) ,
88- )
89- . join ( '\\' ) ;
91+ if ( ! isKeyRegExp ) {
92+ return ( [ , match ] ) => `${ value } ${ match } ` ;
9093 }
9194
92- return [ new RegExp ( key ) , substitute ] ;
95+ const parts = value . split ( '\\\\' ) ;
96+
97+ return execResult => parts
98+ . map ( part =>
99+ part . replace ( / \\ \d + / g, number => execResult [ number . slice ( 1 ) ] || '' ) ,
100+ )
101+ . join ( '\\' ) ;
93102}
94103
95104function normalizeAlias ( optsAlias ) {
@@ -99,18 +108,18 @@ function normalizeAlias(optsAlias) {
99108
100109 const aliasArray = Array . isArray ( optsAlias ) ? optsAlias : [ optsAlias ] ;
101110
102- return aliasArray . reduce ( ( acc , alias ) => {
111+ return aliasArray . reduce ( ( aliasPairs , alias ) => {
103112 const aliasKeys = Object . keys ( alias ) ;
104113
105114 aliasKeys . forEach ( ( key ) => {
106- const aliasPair = isRegExp ( key )
107- ? getAliasPair ( key , alias [ key ] )
108- : getAliasPair ( `^ ${ key } (/.*|)$` , ` ${ alias [ key ] } \\1` ) ;
109-
110- acc . push ( aliasPair ) ;
115+ const isKeyRegExp = isRegExp ( key ) ;
116+ aliasPairs . push ( [
117+ getAliasTarget ( key , isKeyRegExp ) ,
118+ getAliasSubstitute ( alias [ key ] , isKeyRegExp ) ,
119+ ] ) ;
111120 } ) ;
112121
113- return acc ;
122+ return aliasPairs ;
114123 } , [ ] ) ;
115124}
116125
0 commit comments