node-version-use
Version:
Cross-platform solution for using multiple versions of node. Useful for compatibility testing
34 lines (33 loc) • 1.46 kB
JavaScript
import installModule from 'install-module-linked';
import path from 'path';
import url from 'url';
const _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename);
const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules');
const moduleName = 'node-version-install';
let cached;
function loadModule(moduleName, callback) {
if (typeof require === 'undefined') {
import(moduleName).then((mod)=>{
var _ref;
callback(null, (_ref = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _ref !== void 0 ? _ref : null);
}).catch((err)=>callback(err instanceof Error ? err : new Error(String(err)), null));
} else {
try {
callback(null, require(moduleName));
} catch (err) {
callback(err instanceof Error ? err : new Error(String(err)), null);
}
}
}
export default function loadNodeVersionInstall(callback) {
if (cached !== undefined) return callback(undefined, cached);
installModule(moduleName, nodeModules, {}, (err)=>{
if (err) return callback(err);
loadModule(moduleName, (err, _cached)=>{
if (err) return callback(err instanceof Error ? err : new Error(String(err)));
if (!_cached) return callback(new Error(`Failed to load ${moduleName}`));
cached = _cached;
callback(undefined, cached);
});
});
}