load-module-string
v1.0.1
Published
Optimized drop-in replacement for require-from-string - Load module from string with better performance
Maintainers
Readme
module-from-string
Optimized drop-in replacement for require-from-string - Load module from string with better performance and memory efficiency.
Installation
npm install module-from-stringUsage
const moduleFromString = require('module-from-string');
const code = 'module.exports = 42;';
const result = moduleFromString(code);
console.log(result); // 42API
moduleFromString(code, [filename], [options])
code
Type: string
Required. The module code to execute.
filename
Type: string
Default: ''
Optional. The filename to use for the module. This will be available as __filename within the module.
options
Type: object
Optional configuration object. Can also be passed as the second parameter.
options.appendPaths
Type: array
Default: []
Array of paths to append to module search paths.
options.prependPaths
Type: array
Default: []
Array of paths to prepend to module search paths.
Examples
Basic usage
const moduleFromString = require('module-from-string');
const result = moduleFromString('module.exports = { foo: "bar" };');
console.log(result.foo); // 'bar'With filename
const result = moduleFromString(
'module.exports = __filename;',
'virtual-module.js'
);
console.log(result); // 'virtual-module.js'With custom paths
const result = moduleFromString(
'module.exports = 42;',
'module.js',
{ prependPaths: ['/custom/node_modules'] }
);Options as second parameter
const result = moduleFromString('module.exports = 42;', {
prependPaths: ['/custom/path']
});Performance
This library includes several optimizations over the original require-from-string:
- Destructured imports - Avoids property lookups on each call
- Shared empty array - Reuses single array instance instead of creating new ones
- Conditional path concatenation - Only spreads arrays when paths are non-empty
- Memory leak prevention - Cleans up parent references to avoid memory leaks
- Optional chaining - More efficient null checks
Run benchmarks:
npm install
npm run benchmarkTesting
npm testDrop-in Replacement
This module is designed to be a 100% compatible drop-in replacement for require-from-string. Simply replace:
// Before
const requireFromString = require('require-from-string');
// After
const requireFromString = require('module-from-string');All existing code will work without modifications.
License
MIT
