Rewrite a module's exports by applying string transformations, then return for immediate use! No
eval()!
$ npm install --save rewrite-module
// foobar.js
exports.foo = 'FOOBAR_foo';
exports.bar = 'FOOBAR_bar';
const { join } = require('path');
const read = require('fs').readFileSync;
const rewriteModule = require('rewrite-module');
const file = join(__dirname, 'foobar.js');
const data = read(file, 'utf8').replace(/FOOBAR/g, 'foobar');
rewriteModule({file, data});
//=> {foo: 'foobar_foo', bar: 'foobar_bar'}
Returns a new, useable module that's comprised of the contents you provided. The return-module directly reflects the input given; so any defined exports will be available as object keys.
Note: You can receive a
functioninstead of anobjectif that's what you defined. Perhaps a refresher on exports?
Type: string
Required: true
The transformed string to be evaluated in a new VM.
Type: string
The original module's filepath.
MIT © Luke Edwards