es-node-runner
Version:
Node runner that transpiles typescript or es modules using blazing fast ⚡ esbuild and restarts the process automatically on change. Suitable for node development server.
33 lines (32 loc) • 807 B
JavaScript
import {relative} from 'path';
function getParentDir(cwd) {
return cwd.substring(0, cwd.search(/[\\/]/) + 1);
}
function rootLevelFromCWD(str) {
const strLen = str.length;
let level = 0,
i = 0;
while (i < strLen) {
if (str[i] + str[i + 1] === '..') {
level += 1;
i += 3;
} else i += 1;
}
return level;
}
function resolveNodeModulePaths() {
const cwd = process.cwd();
let nodeModuleDir = `node_modules/*`,
level = 0;
const depth = rootLevelFromCWD(
relative(cwd, process.env.PROJECT_CWD ?? getParentDir(cwd))
);
const nodeModulePaths = [`./${nodeModuleDir}`];
while (level < depth) {
nodeModuleDir = '../' + nodeModuleDir;
nodeModulePaths.push(nodeModuleDir);
level++;
}
return nodeModulePaths;
}
export default resolveNodeModulePaths;