You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					35 lines
				
				866 B
			
		
		
			
		
	
	
					35 lines
				
				866 B
			| 
											3 years ago
										 | '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; | ||
|  | }; |