ncjsm
Version:
CJS (Node.js) style modules resolver
27 lines (23 loc) • 925 B
JavaScript
// Generates module path resolver for Node.js
// Used to generate both sync and async version
;
const isObject = require("type/object/is")
, ensureString = require("type/string/ensure")
, getResolver = require("../get-resolver")
, { resolve } = require("path");
module.exports = function (confirmFile, resolvePackageMain) {
const resolveModule = getResolver([".js", ".json", ".node"], confirmFile, resolvePackageMain);
return function (dir, path, options = {}) {
if (!isObject(options)) options = {};
dir = resolve(ensureString(dir));
path = ensureString(path);
if (!path) throw new TypeError("Empty string is not a valid require path");
return resolveModule(dir, path).then(result => {
if (result) return result;
if (options.silent) return null;
const error = new Error(`Cannot find module '${ path }'`);
error.code = "MODULE_NOT_FOUND";
throw error;
});
};
};