vm-plus
v3.0.0
Published
A NodeJS virtual machine
Downloads
99
Readme
VM Plus is a tiny abstraction built on top of Node's VM module which makes it easier to run arbitrary closured code.
Looking for emulating a NodeJS environment inside a VM?
Take a look at vm-nodejs.
const VM = require('vm-plus')
const vm = new VM()
.global('bla', 1)
.local('bla', 2)
vm.runNaked(`bla`) // evaluates to 1
vm.run(`return bla`) // evaluates to 2
vm.run(`test()`, { test: function () { })
API
Script.run()
Runs a compiled script with predefined options and locals. See vm.compile
for more information.
new VM(opts])
Create a new script runner. opts
is an object which can contain the following properties:
- globals is an object containing properties that will become available in the global scope in scripts run by this virtual machine
- locals is an object containing properties that will be available as a local variable in scripts run by this virtual machine
vm.local(name, val) => VM
Add a new variable to the virtual machine that will be available to scripts ran with vm.run
.
vm.global(name, val) => VM
Adds a new global that will be available to scripts ran with vm.runNaked
and vm.run
.
vm.runNaked(code, [options])
Run the code in the context of the VM without any closure, and hence without any locals.
vm.compile(script, [locals], [options])
Compile a script to be executed multiple times or in a later phase of the
application. Returns a Script
instance that is able to run the script.
Options may be passed as an object that can contain the following properties:
- lineOffset an offset that will modify the line number in all stack traces
- columnOffset an offset that will modify the column number in all stack traces
- filename specifies the filename used in stack traces produced by this script
- displayErrors can be set to
true
to prevent NodeJS from adding code to stack traces
vm.run(script, [locals], [options])
Run the code in a closure, with optional locals and an options object that gets passed to vm.runInContext. Options may be passed as an object which can contain the following properties:
- lineOffset an offset that will modify the line number in all stack traces
- columnOffset an offset that will modify the column number in all stack traces
- filename specifies the filename used in stack traces produced by this script
- displayErrors can be set to
true
to prevent NodeJS from adding code to stack traces