UNPKG

999 BJavaScriptView Raw
1import * as fs from 'fs';
2import { dirname, resolve } from 'path';
3
4function isFile ( file ) {
5 try {
6 const stats = fs.statSync( file );
7 return stats.isFile();
8 } catch ( err ) {
9 return false;
10 }
11}
12
13function addJsExtensionIfNecessary ( file ) {
14 if ( isFile( file ) ) return file;
15
16 file += '.js';
17 if ( isFile( file ) ) return file;
18
19 return null;
20}
21
22const absolutePath = /^(?:\/|(?:[A-Za-z]:)?[\\|/])/;
23
24function isAbsolute ( path ) {
25 return absolutePath.test( path );
26}
27
28export default function defaultResolver ( importee, importer ) {
29 // absolute paths are left untouched
30 if ( isAbsolute( importee ) ) return addJsExtensionIfNecessary( resolve( importee ) );
31
32 // if this is the entry point, resolve against cwd
33 if ( importer === undefined ) return addJsExtensionIfNecessary( resolve( process.cwd(), importee ) );
34
35 // external modules are skipped at this stage
36 if ( importee[0] !== '.' ) return null;
37
38 return addJsExtensionIfNecessary( resolve( dirname( importer ), importee ) );
39}