35 lines
		
	
	
		
			866 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			866 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var Module = require('module');
 | |
| var path = require('path');
 | |
| 
 | |
| module.exports = function requireFromString(code, filename, opts) {
 | |
| 	if (typeof filename === 'object') {
 | |
| 		opts = filename;
 | |
| 		filename = undefined;
 | |
| 	}
 | |
| 
 | |
| 	opts = opts || {};
 | |
| 	filename = filename || '';
 | |
| 
 | |
| 	opts.appendPaths = opts.appendPaths || [];
 | |
| 	opts.prependPaths = opts.prependPaths || [];
 | |
| 
 | |
| 	if (typeof code !== 'string') {
 | |
| 		throw new Error('code must be a string, not ' + typeof code);
 | |
| 	}
 | |
| 
 | |
| 	var paths = Module._nodeModulePaths(path.dirname(filename));
 | |
| 
 | |
| 	var parent = module.parent;
 | |
| 	var m = new Module(filename, parent);
 | |
| 	m.filename = filename;
 | |
| 	m.paths = [].concat(opts.prependPaths).concat(paths).concat(opts.appendPaths);
 | |
| 	m._compile(code, filename);
 | |
| 
 | |
| 	var exports = m.exports;
 | |
| 	parent && parent.children && parent.children.splice(parent.children.indexOf(m), 1);
 | |
| 
 | |
| 	return exports;
 | |
| };
 |