NODE_PATH is:
let path = require("path");
// New search path
let absolutePathToModule1 = path.resolve("./path/to/module1");
let absolutePathToModule2 = path.resolve("./path/to/module2");
let nodeSearchPaths = absolutePathToModule1+path.delimiter+absolutePathToModule2;
// Overwrite and implements
if(typeof process.env.NODE_PATH !== 'undefined'){
process.env.NODE_PATH = process.env.NODE_PATH + path.delimiter + nodeSearchPaths ;
} else {
process.env.NODE_PATH = nodePaths;
}
require("module").Module._initPaths();
Be aware that your test environment may implement its own module loader and may not respond to this hack. This is the case of Jest for instance where you should set the modulepaths
In package.json, you need to set it up in:
Example:
"scripts": {
"dev": "cross-env NODE_PATH=./my/module/home/directory main.js",
}
process.env.NODE_PATH = (process.env.NODE_PATH || '')
.split(path.delimiter)
.filter(folder => folder && !path.isAbsolute(folder))
.map(folder => path.resolve(appDirectory, folder))
.join(path.delimiter);
The syntax is the same than PATH environment variable (search path for executable)
NODE_PATH=path[:…]
NODE_PATH=path[;…]