1
- import { dirname , resolve } from ' pathe'
1
+ import { dirname , resolve } from " pathe" ;
2
2
import type { PreRenderedChunk } from "rollup" ;
3
3
import type { BuildContext } from "../../types" ;
4
4
@@ -14,7 +14,9 @@ export const DEFAULT_EXTENSIONS: string[] = [
14
14
".json" ,
15
15
] ;
16
16
17
- export async function resolveAliases ( ctx : BuildContext ) : Promise < Record < string , string > > {
17
+ export async function resolveAliases (
18
+ ctx : BuildContext ,
19
+ ) : Promise < Record < string , string > > {
18
20
const aliases : Record < string , string > = {
19
21
[ ctx . pkg . name ! ] : ctx . options . rootDir ,
20
22
...ctx . options . alias ,
@@ -42,52 +44,65 @@ export async function resolveAliases(ctx: BuildContext): Promise<Record<string,
42
44
* REVIEW: This makes alias resolution asynchronous (which is contagious),
43
45
* because we are dynamic loading TypeScript (cause it's a peer dependency),
44
46
* or we can use a synchronous alternative [get-tsconfig](https://github.com/privatenumber/get-tsconfig).
45
- *
47
+ *
46
48
* Additionally, do we need a flag to explicitly enable this feature?
47
49
*/
48
- const tsconfigAliases = await tryInferTsconfigAliases ( )
49
- if ( tsconfigAliases ) {
50
- Object . assign ( aliases , tsconfigAliases )
50
+ const tsconfigAliases = await tryInferTsconfigAliases ( ) ;
51
+ if ( tsconfigAliases ) {
52
+ Object . assign ( aliases , tsconfigAliases ) ;
51
53
}
52
54
53
55
return aliases ;
54
56
}
55
57
56
- async function tryInferTsconfigAliases ( ) : Promise < Record < string , string > | null > {
57
- const ts = await import ( 'typescript' ) . catch ( ( ) => null )
58
+ async function tryInferTsconfigAliases ( ) : Promise < Record <
59
+ string ,
60
+ string
61
+ > | null > {
62
+ const ts = await import ( "typescript" ) . catch ( ( ) => null ) ;
58
63
59
- if ( ! ts ) {
60
- return null
64
+ if ( ! ts ) {
65
+ return null ;
61
66
}
62
67
63
- const tsconfigPath = ts . findConfigFile ( process . cwd ( ) , ts . sys . fileExists , 'tsconfig.json' )
68
+ const tsconfigPath = ts . findConfigFile (
69
+ process . cwd ( ) ,
70
+ ts . sys . fileExists ,
71
+ "tsconfig.json" ,
72
+ ) ;
64
73
65
- if ( ! tsconfigPath ) {
66
- return null
74
+ if ( ! tsconfigPath ) {
75
+ return null ;
67
76
}
68
77
69
- const tsconfigDir = dirname ( tsconfigPath )
70
- const { config : rawTsconfig } = ts . readConfigFile ( tsconfigPath , ts . sys . readFile )
71
- const { options : tsconfig } = ts . parseJsonConfigFileContent ( rawTsconfig , ts . sys , tsconfigDir )
78
+ const tsconfigDir = dirname ( tsconfigPath ) ;
79
+ const { config : rawTsconfig } = ts . readConfigFile (
80
+ tsconfigPath ,
81
+ ts . sys . readFile ,
82
+ ) ;
83
+ const { options : tsconfig } = ts . parseJsonConfigFileContent (
84
+ rawTsconfig ,
85
+ ts . sys ,
86
+ tsconfigDir ,
87
+ ) ;
72
88
73
- if ( ! tsconfig . paths ) {
74
- return null
89
+ if ( ! tsconfig . paths ) {
90
+ return null ;
75
91
}
76
92
77
- const resolvedBaseUrl = resolve ( tsconfigDir , tsconfig . baseUrl || '.' ) ;
93
+ const resolvedBaseUrl = resolve ( tsconfigDir , tsconfig . baseUrl || "." ) ;
78
94
79
95
const aliases = Object . fromEntries (
80
- Object . entries ( tsconfig . paths )
81
- . map ( ( [ pattern , substitutions ] ) => {
82
- const find = pattern . replace ( / \/ \* $ / , '' )
83
- // Pick only the first path.
84
- const replacement = substitutions [ 0 ] . replace ( / \* $ / , '' )
85
- const resolvedReplacement = resolve ( resolvedBaseUrl , replacement )
86
- return [ find , resolvedReplacement ]
87
- } )
88
- )
96
+ Object . entries ( tsconfig . paths ) . map ( ( [ pattern , substitutions ] ) => {
97
+ const find = pattern . replace ( / \/ \* $ / , "" ) ;
98
+ // Pick only the first path.
99
+ const replacement = substitutions [ 0 ] . replace ( / \* $ / , "" ) ;
100
+ const resolvedReplacement = resolve ( resolvedBaseUrl , replacement ) ;
101
+ return [ find , resolvedReplacement ] ;
102
+ } ) ,
103
+ ) ;
89
104
90
- return aliases
105
+ return aliases ;
91
106
}
92
107
93
108
export function getChunkFilename (
0 commit comments