Read file and eval it. Uses node-eval.
Like require
, but asynchronous and doesn't use the module cache.
Important: internally node-file-eval
will resolve passed relative paths with path.resolve()
, not require.resolve()
.
$ npm install --save node-file-eval
const nodeFileEval = require('node-file-eval');
nodeFileEval('./path/to/file.js')
.then(console.log)
.catch(console.error);
Type: string
.
The filename or file descriptor.
The node-file-eval
determinate format by extension. If filename ends with .json
extention, its contents will be parsing with JSON.parse
. If filename ends with .js
, its contents will be evaluating with vm.
By default expected JS-expression or CommonJS module contents.
Type: Object
, string
.
Options or encoding.
Type: string
.
Default: utf-8
.
The file encoding.
Type: string
.
Default: r
.
The flag mode.
Type: Object
.
The object to provide into execute method.
If context
is specified, then module contents will be evaluating with vm.runInNewContext
.
If context
is not specified, then module contents will be evaluating with vm.runInThisContext
.
With context you can provide some like-a-global variables into node-file-eval
.
const nodeFileEval = require('node-file-eval');
const secretKey = '^___^';
// The file has the contents "module.exports = secretKey;"
nodeFileEval('./path/to/file.js', {
context: { secretKey }
});
// ➜ '^___^'
Synchronous version of nodeFileEval.
Method signature is same.
Supports CommonJS and JSON formats.
See examples with evaluating files with different formats.
Evaluates CommonJS
files with .js
extention.
const nodeFileEval = require('node-file-eval');
// export data with `module.exports` or `exports`
nodeFileEval('./path/to/file.js');
Evaluates JSON
files with .json
extention.
const nodeFileEval = require('node-file-eval');
nodeFileEval('./path/to/file.json');
- node-eval — eval Node.js contents only (JS-expression, CommonJS modules and JSON).
- any-eval — eval any contents (JS-expression, CommonJS modules and JSON/JSON5).
- file-eval — read any file and eval it with any-eval.
MIT © Andrew Abramov