376a6deb9d8d6542a40f0c5774354c54d8070bc1
[dotfiles/.git] / index.js
1 /*
2 relative require
3 */'use strict';
4
5 var path = require('path');
6 var Module = require('module');
7
8 var modules = {};
9
10 var getModule = function(dir) {
11   var rootPath = dir ? path.resolve(dir) : process.cwd();
12   var rootName = path.join(rootPath, '@root');
13   var root = modules[rootName];
14   if (!root) {
15     root = new Module(rootName);
16     root.filename = rootName;
17     root.paths = Module._nodeModulePaths(rootPath);
18     modules[rootName] = root;
19   }
20   return root;
21 };
22
23 var requireRelative = function(requested, relativeTo) {
24   var root = getModule(relativeTo);
25   return root.require(requested);
26 };
27
28 requireRelative.resolve = function(requested, relativeTo) {
29   var root = getModule(relativeTo);
30   return Module._resolveFilename(requested, root);
31 };
32
33 module.exports = requireRelative;