resolve
implements the node require.resolve() algorithm such that you can require.resolve() on behalf of a file asynchronously and synchronously
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.jssynchronously resolve:
var resolve = require('resolve/sync'); // or, `require('resolve').sync
var res = resolve('tap', { basedir: __dirname });
console.log(res);methods
For both the synchronous and asynchronous methods, errors may have any of the following err.code values:
MODULE_NOT_FOUND: the given path string (id) could not be resolved to a moduleINVALID_BASEDIR: the specifiedopts.basedirdoesn't exist, or is not a directoryINVALID_PACKAGE_MAIN: apackage.jsonwas encountered with an invalidmainproperty (eg. not a string)
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:
opts.basedir - directory to begin resolving from
opts.package -
package.jsondata applicable to the module being loadedopts.extensions - array of file extensions to search in order
opts.includeCoreModules - set to
falseto exclude node core modules (e.g.fs) from the searchopts.readFile - how to read files asynchronously
opts.isFile - function to asynchronously test whether a file exists
opts.isDirectory - function to asynchronously test whether a file exists and is a directory
opts.realpath - function to asynchronously resolve a potential symlink to its real path
opts.readPackage(readFile, pkgfile, cb)- function to asynchronously read and parse a package.json filereadFile - the passed
opts.readFileorfs.readFileif not specifiedpkgfile - path to package.json
cb - callback
opts.packageFilter(pkg, pkgfile, dir)- transform the parsed package.json contents before looking at the "main" fieldpkg - package data
pkgfile - path to package.json
dir - directory that contains package.json
opts.pathFilter(pkg, path, relativePath)- transform a path within a packagepkg - package data
path - the path being resolved
relativePath - the path relative from the package.json location
returns - a relative path that will be joined from the package.json location
opts.paths - require.paths array to use if nothing is found on the normal
node_modulesrecursive walk (probably don't use this)For advanced users,
pathscan also be aopts.paths(request, start, opts)functionrequest - the import specifier being resolved
start - lookup path
getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard
node_modulesresolutionopts - the resolution options
opts.packageIterator(request, start, opts)- return the list of candidate paths where the packages sources may be found (probably don't use this)request - the import specifier being resolved
start - lookup path
getPackageCandidates - a thunk (no-argument function) that returns the paths using standard
node_modulesresolutionopts - the resolution options
opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default:
"node_modules"opts.preserveSymlinks - if true, doesn't resolve
basedirto real path before resolving. This is the way Node resolves dependencies when executed with the --preserve-symlinks flag. Note: this property is currentlytrueby default but it will be changed tofalsein the next major version because Node's resolution algorithm does not preserve symlinks by default.
default opts values:
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:
opts.basedir - directory to begin resolving from
opts.extensions - array of file extensions to search in order
opts.includeCoreModules - set to
falseto exclude node core modules (e.g.fs) from the searchopts.readFileSync - how to read files synchronously
opts.isFile - function to synchronously test whether a file exists
opts.isDirectory - function to synchronously test whether a file exists and is a directory
opts.realpathSync - function to synchronously resolve a potential symlink to its real path
opts.readPackageSync(readFileSync, pkgfile)- function to synchronously read and parse a package.json filereadFileSync - the passed
opts.readFileSyncorfs.readFileSyncif not specifiedpkgfile - path to package.json
opts.packageFilter(pkg, dir)- transform the parsed package.json contents before looking at the "main" fieldpkg - package data
dir - directory that contains package.json (Note: the second argument will change to "pkgfile" in v2)
opts.pathFilter(pkg, path, relativePath)- transform a path within a packagepkg - package data
path - the path being resolved
relativePath - the path relative from the package.json location
returns - a relative path that will be joined from the package.json location
opts.paths - require.paths array to use if nothing is found on the normal
node_modulesrecursive walk (probably don't use this)For advanced users,
pathscan also be aopts.paths(request, start, opts)functionrequest - the import specifier being resolved
start - lookup path
getNodeModulesDirs - a thunk (no-argument function) that returns the paths using standard
node_modulesresolutionopts - the resolution options
opts.packageIterator(request, start, opts)- return the list of candidate paths where the packages sources may be found (probably don't use this)request - the import specifier being resolved
start - lookup path
getPackageCandidates - a thunk (no-argument function) that returns the paths using standard
node_modulesresolutionopts - the resolution options
opts.moduleDirectory - directory (or directories) in which to recursively look for modules. default:
"node_modules"opts.preserveSymlinks - if true, doesn't resolve
basedirto real path before resolving. This is the way Node resolves dependencies when executed with the --preserve-symlinks flag. Note: this property is currentlytrueby default but it will be changed tofalsein the next major version because Node's resolution algorithm does not preserve symlinks by default.
default opts values:
install
With npm do:
license
MIT
Last updated
