# recursive-readdir

> Get an array of all files in a directory and subdirectories.

Latest version **2.2.3** (published 2022-10-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install recursive-readdir
pnpm add recursive-readdir
yarn add recursive-readdir
bun add recursive-readdir
```

## Health

**Score 33/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.2.3 |
| Published | 2022-10-25 |
| First published | 2012-01-07 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/recursive-readdir) |
| Module format | CommonJS |
| Node | >=6.0.0 |
| Dependencies | 1 |
| Unpacked size | 5.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 343 |
| Author | Jamison Dance |
| Maintainers | jergason, bnb |
| Keywords | directory, lister |

## Links

- npm: https://www.npmjs.com/package/recursive-readdir
- Repository: https://github.com/jergason/recursive-readdir
- Homepage: https://github.com/jergason/recursive-readdir#readme
- Issues: https://github.com/jergason/recursive-readdir/issues
- npm.io page: https://npm.io/package/recursive-readdir

## Dependencies (1)

- [minimatch](https://npm.io/package/minimatch.md) ^3.0.5

## Recent versions

- 2.2.3 (latest) — 2022-10-25
- 2.2.2 — 2018-02-21
- 2.2.1 — 2017-05-15
- 2.1.1 — 2017-02-15
- 2.1.0 — 2016-09-19
- 2.0.0 — 2016-04-06
- 1.3.0 — 2015-10-28
- 1.2.1 — 2015-01-14
- 1.2.0 — 2014-08-17
- 1.1.3 — 2014-07-16
- 1.1.2 — 2014-06-27
- 1.1.1 — 2014-05-20
- 1.1.0 — 2014-05-02
- 1.0.0 — 2014-03-15
- 0.0.2 — 2013-11-09
- … 1 more at https://npm.io/package/recursive-readdir/versions

## README

# recursive-readdir

[![Build Status](https://travis-ci.org/jergason/recursive-readdir.svg?branch=master)](https://travis-ci.org/jergason/recursive-readdir)

Recursively list all files in a directory and its subdirectories. It does not list the directories themselves.

Because it uses fs.readdir, which calls [readdir](http://linux.die.net/man/3/readdir) under the hood
on OS X and Linux, the order of files inside directories is [not guaranteed](http://stackoverflow.com/questions/8977441/does-readdir-guarantee-an-order).

## Installation

    npm install recursive-readdir

## Usage

```javascript
var recursive = require("recursive-readdir");

recursive("some/path", function (err, files) {
  // `files` is an array of file paths
  console.log(files);
});
```

It can also take a list of files to ignore.

```javascript
var recursive = require("recursive-readdir");

// ignore files named "foo.cs" or files that end in ".html".
recursive("some/path", ["foo.cs", "*.html"], function (err, files) {
  console.log(files);
});
```

You can also pass functions which are called to determine whether or not to
ignore a file:

```javascript
var recursive = require("recursive-readdir");

function ignoreFunc(file, stats) {
  // `file` is the path to the file, and `stats` is an `fs.Stats`
  // object returned from `fs.lstat()`.
  return stats.isDirectory() && path.basename(file) == "test";
}

// Ignore files named "foo.cs" and descendants of directories named test
recursive("some/path", ["foo.cs", ignoreFunc], function (err, files) {
  console.log(files);
});
```

## Promises
You can omit the callback and return a promise instead.

```javascript
var recursive = require("recursive-readdir");

recursive("some/path").then(
  function(files) {
    console.log("files are", files);
  },
  function(error) {
    console.error("something exploded", error);
  }
);
```

The ignore strings support Glob syntax via
[minimatch](https://github.com/isaacs/minimatch).

---
_Source: https://npm.io/package/recursive-readdir · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
