Skip to content

Latest commit

 

History

History
131 lines (84 loc) · 3.26 KB

readme.md

File metadata and controls

131 lines (84 loc) · 3.26 KB

find-up Build Status

Find a file or directory by walking up parent directories


Get professional support for 'find-up' with a Tidelift subscription
Tidelift helps make open source sustainable for maintainers while giving companies
assurances about security, maintenance, and licensing for their dependencies.

Install

$ npm install find-up

Usage

/
└── Users
		└── sindresorhus
				├── unicorn.png
				└── foo
						└── bar
								├── baz
								└── example.js

example.js

const fs = require('fs');
const path = require('path');
const findUp = require('find-up');

(async () => {
	console.log(await findUp('unicorn.png'));
	//=> '/Users/sindresorhus/unicorn.png'

	console.log(await findUp(['rainbow.png', 'unicorn.png']));
	//=> '/Users/sindresorhus/unicorn.png'

	console.log(await findUp(dir => {
		return fs.existsSync(path.join(dir, 'unicorn.png')) && 'foo';
	}));
	//=> '/Users/sindresorhus/foo'

	console.log(await findUp(async dir => {
		const children = await fs.promises.readdir(dir);
		if (children.some(fileName => fileName.endsWith('.png'))) {
			return dir;
		}
	}));
	//=> '/Users/sindresorhus'
})();

API

findUp(name, [options])

findUp(matcher, [options])

Returns a Promise for either the path or undefined if it couldn't be found.

findUp([nameA, nameB], [options])

Returns a Promise for either the first path found (by respecting the order) or undefined if none could be found.

findUp.sync(name, [options])

findUp.sync(matcher, [options])

Returns a path or undefined if it couldn't be found.

findUp.sync([nameA, nameB], [options])

Returns the first path found (by respecting the order) or undefined if none could be found.

name

Type: string

Name of the file or directory to find.

matcher

Type: Function

A function that will be called with each directory until it returns a filepath to stop the search or the root directory has been reached and nothing was found. Useful if you want to match files with a certain pattern, set of permissions, or other advanced use cases.

When using async mode, matcher may optionally be an async function or return a Promise for the filepath.

options

Type: object

cwd

Type: string
Default: process.cwd()

Directory to start from.

Security

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

Related

  • find-up-cli - CLI for this module
  • pkg-up - Find the closest package.json file
  • pkg-dir - Find the root directory of an npm package
  • resolve-from - Resolve the path of a module like require.resolve() but from a given path

License

MIT © Sindre Sorhus