1
1
import { createRequire as nodeCreateRequire } from 'node:module' ;
2
2
import { pathToFileURL } from 'node:url' ;
3
+ import createJITI from 'jiti' ;
3
4
import { debugLog } from './debug.js' ;
4
5
import { getPackageNameFromModuleSpecifier } from './modules.js' ;
5
6
import { cwd , toPosix , join } from './path.js' ;
6
7
import { timerify } from './Performance.js' ;
8
+ import { jiti } from './register.js' ;
7
9
8
10
const createRequire = ( path ?: string ) => nodeCreateRequire ( pathToFileURL ( path ?? cwd ) ) ;
9
-
10
11
const require = createRequire ( ) ;
12
+ export const _require = timerify ( require ) ;
11
13
12
- const resolve = ( specifier : string ) => toPosix ( require . resolve ( specifier ) ) ;
14
+ const resolve = ( specifier : string ) => toPosix ( jiti . resolve ( specifier ) ) ;
13
15
14
16
const tryResolve = ( specifier : string , from : string ) => {
15
17
try {
@@ -21,8 +23,9 @@ const tryResolve = (specifier: string, from: string) => {
21
23
22
24
const resolveSpecifier = ( dir : string , specifier : string ) => {
23
25
try {
24
- const require = createRequire ( join ( dir , 'package.json' ) ) ;
25
- return toPosix ( require . resolve ( specifier ) ) ;
26
+ // @ts -expect-error Our package.json has type=module (for globby, chalk, etc), but here it confuses TypeScript
27
+ const jiti = createJITI ( dir ) ;
28
+ return toPosix ( jiti . resolve ( specifier ) ) ;
26
29
} catch {
27
30
const packageName = getPackageNameFromModuleSpecifier ( specifier ) ;
28
31
if ( packageName ) {
@@ -32,8 +35,6 @@ const resolveSpecifier = (dir: string, specifier: string) => {
32
35
}
33
36
} ;
34
37
35
- export const _require = timerify ( require ) ;
36
-
37
38
export const _resolve = timerify ( resolve ) ;
38
39
39
40
export const _tryResolve = timerify ( tryResolve ) ;
0 commit comments