GitHub - browserify/resolve: Implements the node.js require.resolve() algorithm (original) (raw)

resolve Version Badge

implements the node require.resolve() algorithm such that you can require.resolve() on behalf of a file asynchronously and synchronously

github actions coverage dependency status dev dependency status License Downloads

npm badge

example

asynchronously resolve:

var resolve = require('resolve/async'); // or, require('resolve') resolve('tap', { basedir: __dirname }, function (err, res) { if (err) console.error(err); else console.log(res); });

$ node example/async.js
/home/substack/projects/node-resolve/node_modules/tap/lib/main.js

synchronously resolve:

var resolve = require('resolve/sync'); // or, `require('resolve').sync var res = resolve('tap', { basedir: __dirname }); console.log(res);

$ node example/sync.js
/home/substack/projects/node-resolve/node_modules/tap/lib/main.js

methods

var resolve = require('resolve'); var async = require('resolve/async'); var sync = require('resolve/sync');

For both the synchronous and asynchronous methods, errors may have any of the following err.code values:

resolve(id, opts={}, cb)

Asynchronously resolve the module path string id into cb(err, res [, pkg]), where pkg (if defined) is the data from package.json.

options are:

default opts values:

{ paths: [], basedir: __dirname, extensions: ['.js'], includeCoreModules: true, readFile: fs.readFile, isFile: function isFile(file, cb) { fs.stat(file, function (err, stat) { if (!err) { return cb(null, stat.isFile() || stat.isFIFO()); } if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); return cb(err); }); }, isDirectory: function isDirectory(dir, cb) { fs.stat(dir, function (err, stat) { if (!err) { return cb(null, stat.isDirectory()); } if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); return cb(err); }); }, realpath: function realpath(file, cb) { var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; realpath(file, function (realPathErr, realPath) { if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr); else cb(null, realPathErr ? file : realPath); }); }, readPackage: function defaultReadPackage(readFile, pkgfile, cb) { readFile(pkgfile, function (readFileErr, body) { if (readFileErr) cb(readFileErr); else { try { var pkg = JSON.parse(body); cb(null, pkg); } catch (jsonErr) { cb(jsonErr); } } }); }, moduleDirectory: 'node_modules', preserveSymlinks: false }

resolve.sync(id, opts)

Synchronously resolve the module path string id, returning the result and throwing an error when id can't be resolved.

options are:

default opts values:

{ paths: [], basedir: __dirname, extensions: ['.js'], includeCoreModules: true, readFileSync: fs.readFileSync, isFile: function isFile(file) { try { var stat = fs.statSync(file); } catch (e) { if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; throw e; } return stat.isFile() || stat.isFIFO(); }, isDirectory: function isDirectory(dir) { try { var stat = fs.statSync(dir); } catch (e) { if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; throw e; } return stat.isDirectory(); }, realpathSync: function realpathSync(file) { try { var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; return realpath(file); } catch (realPathErr) { if (realPathErr.code !== 'ENOENT') { throw realPathErr; } } return file; }, readPackageSync: function defaultReadPackageSync(readFileSync, pkgfile) { return JSON.parse(readFileSync(pkgfile)); }, moduleDirectory: 'node_modules', preserveSymlinks: false }

install

With npm do:

license

MIT