@@ -5,6 +5,8 @@ import { pathRegExp, toPathRegExp } from "../utils/regex.ts";
55
66export type BaseBuildConfig = ReturnType < typeof baseBuildConfig > ;
77
8+ const ROOT_ALIAS = "@" ;
9+
810export function baseBuildConfig ( nitro : Nitro ) {
911 // prettier-ignore
1012 const extensions : string [ ] = [ ".ts" , ".mjs" , ".js" , ".json" , ".node" , ".tsx" , ".jsx" ] ;
@@ -100,13 +102,14 @@ export function resolveAliases(_aliases: Record<string, string>) {
100102 ( [ a ] , [ b ] ) => b . split ( "/" ) . length - a . split ( "/" ) . length || b . length - a . length
101103 )
102104 ) ;
105+ const resolvableAliases = Object . keys ( aliases ) . filter ( isResolvableAliasKey ) ;
103106 // Resolve alias values in relation to each other
104107 for ( const key in aliases ) {
105- for ( const alias in aliases ) {
106- if ( ! [ "~" , "@" , "#" ] . includes ( alias [ 0 ] ) ) {
107- continue ;
108- }
109- if ( alias === "@" && ! aliases [ key ] . startsWith ( "@/" ) ) {
108+ if ( ! isResolvableAliasValue ( aliases [ key ] ) ) {
109+ continue ;
110+ }
111+ for ( const alias of resolvableAliases ) {
112+ if ( alias === ROOT_ALIAS && ! aliases [ key ] . startsWith ( ` ${ ROOT_ALIAS } /` ) ) {
110113 continue ;
111114 } // Don't resolve @foo/bar
112115
@@ -117,3 +120,12 @@ export function resolveAliases(_aliases: Record<string, string>) {
117120 }
118121 return aliases ;
119122}
123+
124+ function isResolvableAliasKey ( id : string ) {
125+ // Internal aliases: `~`, `~~`, `@`, `@@`, `#*` (but not scoped packages like `@scope/pkg`)
126+ return id [ 0 ] === "~" || id [ 0 ] === "#" || / ^ @ + $ / . test ( id ) ;
127+ }
128+
129+ function isResolvableAliasValue ( id : string ) {
130+ return id [ 0 ] === "~" || id [ 0 ] === "#" || / ^ @ + \/ / . test ( id ) ;
131+ }
0 commit comments