vm-plus v3.0.0
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
trueto 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
trueto prevent NodeJS from adding code to stack traces