blob: c03671ce5af0d68431aeb3386f466561cba925f9 [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 Lippebc3a0b72021-11-08 15:22:37 +000021 } catch (err) { /* ignore */ }
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010022
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 Lippebc3a0b72021-11-08 15:22:37 +000026 } catch (err) { /* ignore */ }
Tim van der Lippefdbd42e2020-04-07 15:14:36 +010027
28 // finally, try from here
Tim van der Lippe2c891972021-07-29 16:22:50 +010029 return require(p);
30};