@@ -14,6 +14,20 @@ exports.CASE_SENSITIVE_FS = CASE_SENSITIVE_FS
1414
1515const fileExistsCache = new ModuleCache ( )
1616
17+ function tryRequire ( target ) {
18+ let resolved ;
19+ try {
20+ // Check if the target exists
21+ resolved = require . resolve ( target ) ;
22+ } catch ( e ) {
23+ // If the target does not exist then just return undefined
24+ return undefined ;
25+ }
26+
27+ // If the target exists then return the loaded module
28+ return require ( resolved ) ;
29+ }
30+
1731// http://stackoverflow.com/a/27382838
1832exports . fileExistsWithCaseSync = function fileExistsWithCaseSync ( filepath , cacheSettings ) {
1933 // don't care if the FS is case-sensitive
@@ -135,27 +149,20 @@ function resolverReducer(resolvers, map) {
135149 throw new Error ( 'invalid resolver config' )
136150}
137151
152+ function getBaseDir ( sourceFile ) {
153+ return pkgDir . sync ( sourceFile ) || process . cwd ( )
154+ }
138155function requireResolver ( name , sourceFile ) {
139156 // Try to resolve package with conventional name
140- try {
141- return require ( `eslint-import-resolver- ${ name } ` )
142- } catch ( err ) { /* continue */ }
157+ let resolver = tryRequire ( `eslint-import-resolver- ${ name } ` ) ||
158+ tryRequire ( name ) ||
159+ tryRequire ( path . resolve ( getBaseDir ( sourceFile ) , name ) )
143160
144- // Try to resolve package with custom name (@myorg/resolver-name)
145- try {
146- return require ( name )
147- } catch ( err ) { /* continue */ }
148-
149- // Try to resolve package with path, relative to closest package.json
150- // or current working directory
151- try {
152- const baseDir = pkgDir . sync ( sourceFile ) || process . cwd ( )
153- // absolute paths ignore base, so this covers both
154- return require ( path . resolve ( baseDir , name ) )
155- } catch ( err ) { /* continue */ }
156-
157- // all else failed
158- throw new Error ( `unable to load resolver "${ name } ".` )
161+ if ( ! resolver ) {
162+ throw new Error ( `unable to load resolver "${ name } ".` )
163+ } else {
164+ return resolver ;
165+ }
159166}
160167
161168const erroredContexts = new Set ( )
0 commit comments