This package finds a file or directory by walking up parent directories.
npm install findup-litThis package finds a file or directory by walking up parent directories.
``bash`
$ npm i findup-litor
$ yarn add findup-lit
`text-- bar
fixtures
|-- baz.js
|-- directory-link -> .
|-- file
|-- file-link -> file
|-- foo
| -- foo.js`
`js
import path from 'path';
import { findUp, findUpExists } from 'findup-lit';
(async () => {
console.log(await findUp('foo.js'));
// -> '/fixtures/foo.js'
console.log(await findUp(['foo.js', 'baz.js']));
// -> '/fixtures/foo.js'
console.log(
await findUp(
async directory => {
const hasFoo = await findUpExists(path.join(directory, 'foo.js'));
return hasFoo && directory;
},
{ type: 'directory' },
),
);
// -> '/fixtures'
})();
`
Returns a Promise (async mode) for either the first pathmatcher
found (by respecting the order of the array if is of type string[])undefined
or if none could be found.
In sync mode the promise is omitted and findUpSync returns either a stringundefined
or .
#### matcher
Type: string | string[] | (directory: string) => string|null
Either the name of the file or directory to find, an array of files or
directories to find or a function that will be called with each directory until
it returns a string with the path, which stops the search, or the root
directory has been reached and nothing was found.
> Useful if you want to match files with certain patterns, set of permissions,
> or other advanced use-cases.
> Note: When using async mode, the matcher may optionally be an async or
> promise-returning function that returns the path.
#### options
Type: Object
##### cwd
Type: string \process.cwd()
Default:
Current working directory that is being used to start searching from.
##### type
Type: string \'file'
Default: \'file' | 'directory'
Values:
The type of a matching path. This can either be file or directory.
##### allowSymlinks
Type: booleantrue
Default:
Allow or disallow symbolic links to match if they point to the chosen path type.
Returns a Promise (async mode) or a boolean of whether the path
exists.
#### path
Type: string
The path to a file or directory.
A Symbol that can be returned by a matcher function to stop the search andfindUp
cause /findUpSync to immediately return undefined. Useful as a
performance optimization in case the current working directory is deeply
nested in the filesystem.
`js
import path from 'path';
import { findUp, findUpStop } from 'findup-lit';
(async () => {
await findUp(directory => {
return path.basename(directory) === 'work' ? findUpStop : 'foo.js';
});
})();
`
(1) Install dependencies
`bash`
$ npm ior
$ yarn
(2) Run initial validation
`bash`
$ ./Taskfile.sh validate
(3) Start developing. See ./Taskfile.sh` for more tasks to
help you develop.