@@ -26,7 +26,7 @@ class PreserveModuleNamePlugin {
2626 if ( m . constructor . name === "ConcatenatedModule" )
2727 modulesBeforeConcat . splice ( i -- , 1 , ...m [ "modules" ] ) ;
2828 }
29- for ( let module of getPreservedModules ( modules ) ) {
29+ for ( let module of getPreservedModules ( modules , alias ) ) {
3030 // Even though it's imported by Aurelia, it's still possible that the module
3131 // became the _root_ of a ConcatenatedModule.
3232 // We use `constructor.name` rather than `instanceof` for compat. with Webpack 2.
@@ -59,14 +59,33 @@ class PreserveModuleNamePlugin {
5959}
6060exports . PreserveModuleNamePlugin = PreserveModuleNamePlugin ;
6161;
62- function getPreservedModules ( modules ) {
62+ function getPreservedModules ( modules , aliases ) {
6363 return new Set ( modules . filter ( m => {
6464 // Some modules might have [preserveModuleName] already set, see ConventionDependenciesPlugin.
6565 let value = m [ exports . preserveModuleName ] ;
6666 for ( let r of m . reasons ) {
6767 if ( ! r . dependency [ exports . preserveModuleName ] )
6868 continue ;
6969 value = true ;
70+ // Handle aliases
71+ const raw = r . module && r . module . rawRequest ;
72+ const ext = m . rawRequest && m . rawRequest . match ( / ^ .+ ( \. \w + $ ) / ) ;
73+ if ( aliases && raw && ext ) {
74+ const alias_matches = Object . keys ( aliases ) . filter ( ( a ) => {
75+ // Absolute?
76+ if ( a [ a . length - 1 ] === '$' && a === `${ raw } $` ) {
77+ return true ;
78+ }
79+ return ! ! ( raw . match ( new RegExp ( `^${ a } /` ) ) ) ;
80+ } ) ;
81+ // Invalid?
82+ if ( alias_matches . length > 1 )
83+ throw new Error ( `Incorrect alias usage. "${ raw } " is duplicated in ${ alias_matches } ` ) ;
84+ else if ( alias_matches . length === 1 && ext [ 1 ] ) {
85+ m [ exports . preserveModuleName ] = `${ raw } ${ ext [ 1 ] } ` ;
86+ return true ;
87+ }
88+ }
7089 let req = removeLoaders ( r . dependency . request ) ;
7190 // We try to find an absolute string and set that as the module [preserveModuleName], as it's the best id.
7291 if ( req && ! req . startsWith ( "." ) ) {
0 commit comments