--- /dev/null
+/*
+relative require
+*/'use strict';
+
+var path = require('path');
+var Module = require('module');
+
+var modules = {};
+
+var getModule = function(dir) {
+ var rootPath = dir ? path.resolve(dir) : process.cwd();
+ var rootName = path.join(rootPath, '@root');
+ var root = modules[rootName];
+ if (!root) {
+ root = new Module(rootName);
+ root.filename = rootName;
+ root.paths = Module._nodeModulePaths(rootPath);
+ modules[rootName] = root;
+ }
+ return root;
+};
+
+var requireRelative = function(requested, relativeTo) {
+ var root = getModule(relativeTo);
+ return root.require(requested);
+};
+
+requireRelative.resolve = function(requested, relativeTo) {
+ var root = getModule(relativeTo);
+ return Module._resolveFilename(requested, root);
+};
+
+module.exports = requireRelative;