1
+ import path from 'node:path'
2
+
1
3
import type { TsconfigOptions } from 'rspack-resolver'
2
4
import { globSync , isDynamicPattern } from 'tinyglobby'
3
5
@@ -10,7 +12,7 @@ import {
10
12
defaultExtensions ,
11
13
defaultMainFields ,
12
14
} from './constants.js'
13
- import { tryFile } from './helpers.js'
15
+ import { toNativePath , tryFile } from './helpers.js'
14
16
import { log } from './logger.js'
15
17
import type { TypeScriptResolverOptions } from './types.js'
16
18
@@ -22,10 +24,12 @@ let warned: boolean | undefined
22
24
23
25
export function normalizeOptions (
24
26
options ?: TypeScriptResolverOptions | null ,
27
+ cwd ?: string ,
25
28
) : TypeScriptResolverOptions
26
29
// eslint-disable-next-line sonarjs/cognitive-complexity
27
30
export function normalizeOptions (
28
31
options ?: TypeScriptResolverOptions | null ,
32
+ cwd = process . cwd ( ) ,
29
33
) : TypeScriptResolverOptions {
30
34
let { project, tsconfig, noWarnOnMultipleProjects } = ( options ||= { } )
31
35
@@ -38,15 +42,25 @@ export function normalizeOptions(
38
42
ensured = true
39
43
} else if ( project ) {
40
44
project = Array . isArray ( project ) ? project : [ project ]
45
+ log ( 'original projects:' , ...project )
41
46
if ( project . some ( p => isDynamicPattern ( p ) ) ) {
47
+ project = project . map ( p =>
48
+ path . isAbsolute ( p ) ? path . relative ( cwd , p ) : p ,
49
+ )
50
+ log ( 'relative path projects:' , ...project )
42
51
project = globSync ( project , {
43
52
absolute : true ,
53
+ cwd,
44
54
dot : true ,
55
+ expandDirectories : false ,
45
56
onlyFiles : false ,
46
57
ignore : DEFAULT_IGNORE ,
47
58
} )
48
59
}
49
- project = project . flatMap ( p => tryFile ( DEFAULT_TRY_PATHS , false , p ) || [ ] )
60
+ log ( 'resolving projects:' , ...project )
61
+ project = project . flatMap (
62
+ p => tryFile ( DEFAULT_TRY_PATHS , false , toNativePath ( p ) ) || [ ] ,
63
+ )
50
64
log ( 'resolved projects:' , ...project )
51
65
if ( project . length === 1 ) {
52
66
configFile = project [ 0 ]
0 commit comments