3.8 KiB
3.8 KiB
Resolve Parent Path
Resolve a path by walking parent directories.
Usage
var resolveParentPath = require( '@stdlib/fs/resolve-parent-path' );
resolveParentPath( path[, options], clbk )
Asynchronously resolves a path by walking parent directories.
resolveParentPath( 'package.json', onPath );
function onPath( error, path ) {
if ( error ) {
throw error;
}
console.log( path );
// => '...'
}
The function accepts the following options
:
- dir: base directory from which to begin walking. May be either an absolute path or a path relative to the current working directory.
By default, the function begins walking from the current working directory. To specify an alternative directory, set the dir
option.
var opts = {
'dir': __dirname
};
resolveParentPath( 'package.json', opts, onPath );
function onPath( error, path ) {
if ( error ) {
throw error;
}
console.log( path );
// => '...'
}
resolveParentPath.sync( path[, options] )
Synchronously resolves a path by walking parent directories.
var path = resolveParentPath.sync( 'package.json' );
// returns '...'
The function accepts the same options
as resolveParentPath()
.
Notes
- If unable to resolve a path, both functions return
null
. - This implementation is not similar in functionality to core
path.resolve
. The latter performs string manipulation to generate a full path. This implementation walks parent directories to perform a search, thereby touching the file system. Accordingly, this implementation resolves a real absolute file path and is intended for use when a target's location in a parent directory is unknown relative to a child directory; e.g., when wanting to find a package root from deep within a package directory.
Examples
var resolveParentPath = require( '@stdlib/fs/resolve-parent-path' );
var opts = {
'dir': __dirname
};
/* Sync */
var out = resolveParentPath.sync( 'package.json', opts );
// returns '...'
out = resolveParentPath.sync( 'non_existent_basename' );
// returns null
/* Async */
resolveParentPath( 'package.json', opts, onPath );
resolveParentPath( './../non_existent_path', onPath );
function onPath( error, path ) {
if ( error ) {
throw error;
}
console.log( path );
}
CLI
Usage
Usage: resolve-parent-path [options] <path>
Options:
-h, --help Print this message.
-V, --version Print the package version.
--dir dir Base search directory.
Examples
$ resolve-parent-path package.json