/
require-like.js
40 lines (32 loc) · 1.07 KB
/
require-like.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
var Module = require('module');
var dirname = require('path').dirname;
module.exports = function requireLike(path, uncached) {
var parentModule = new Module(path);
parentModule.filename = path;
parentModule.paths = Module._nodeModulePaths(dirname(path));
function requireLike(file) {
var cache = Module._cache;
if (uncached) {
Module._cache = {};
}
var exports = Module._load(file, parentModule);
Module._cache = cache;
return exports;
};
requireLike.resolve = function(request) {
var resolved = Module._resolveFilename(request, parentModule);
// Module._resolveFilename returns a string since node v0.6.10,
// it used to return an array prior to that
return (resolved instanceof Array) ? resolved[1] : resolved;
}
try {
requireLike.paths = require.paths;
} catch (e) {
//require.paths was deprecated in node v0.5.x
//it now throws an exception when called
}
requireLike.main = process.mainModule;
requireLike.extensions = require.extensions;
requireLike.cache = require.cache;
return requireLike;
};