Skip to content

zewish/vmod

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 

NPM version Downloads

Virtual module for node.js - vmod

  • Runs in different script context than your current script;
  • Executes a string of code in require-like environment;
  • Allows you to override globals of the sandbox environment;
  • Returns module.exports output;
  • Throws errors that can be caught in your current context;

Known limitations:

  • console.log, console.warn, console.error, etc. output not visible;
  • Modifications to prototypes of some globals not visible in the vmod context;
  • Only CommonJS modules supported;

Installation

$ npm install vmod --save

Simple

const vmod = require('vmod');

console.log(
  vmod('module.exports = 123;')
); // 123

Export function

const vmod = require('vmod');

console.log(
  vmod(
    'module.exports = () => "yay!";'
  )()
); // "yay!"

Require External file

/*
./_test-file.js:
module.exports = "test file data";
*/

const vmod = require('vmod');

console.log(
  vmod(
    'module.exports = require("./_test-file.js")'
  )()
); // "test file data"

Override sandbox variable

const vmod = require('vmod');

vmod(
  'module.exports = require("./_test-file.js")',
  { require: null }
); // TypeError: require is not a function