blob: 70e55106212e63a6912021b623c121b5a592d878 [file] [log] [blame]
Tim van der Lippe2c891972021-07-29 16:22:50 +01001'use strict';
2exports.__esModule = true;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +01003
Tim van der Lippe2c891972021-07-29 16:22:50 +01004const Module = require('module');
5const path = require('path');
Tim van der Lippefdbd42e2020-04-07 15:14:36 +01006
7// borrowed from babel-eslint
8function createModule(filename) {
Tim van der Lippe2c891972021-07-29 16:22:50 +01009 const mod = new Module(filename);
10 mod.filename = filename;
11 mod.paths = Module._nodeModulePaths(path.dirname(filename));
12 return mod;
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010013}
14
15exports.default = function moduleRequire(p) {
16 try {
17 // attempt to get espree relative to eslint
Tim van der Lippe2c891972021-07-29 16:22:50 +010018 const eslintPath = require.resolve('eslint');
19 const eslintModule = createModule(eslintPath);
20 return require(Module._resolveFilename(p, eslintModule));
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010021 } catch(err) { /* ignore */ }
22
23 try {
24 // try relative to entry point
Tim van der Lippe2c891972021-07-29 16:22:50 +010025 return require.main.require(p);
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010026 } catch(err) { /* ignore */ }
27
28 // finally, try from here
Tim van der Lippe2c891972021-07-29 16:22:50 +010029 return require(p);
30};