A fast, reliable utility to check if a directory is empty or contains only files you want to ignore. Built with modern JavaScript and performance optimizations.
- Fast: Early exit optimization for large directories
- Flexible: Ignore files by name, RegExp, or custom function
- Sync & Async: Use in both callback and promise-based code
- Cross-platform: Works on Linux, macOS, and Windows
- Supports CommonJS and ES Modules
npm install is-empty-dir
const isEmptyDir = require('is-empty-dir');
(async () => {
const empty = await isEmptyDir('/path/to/dir');
console.log(empty); // true or false
})();
// Synchronous
const { isEmptyDirSync } = require('is-empty-dir');
const emptySync = isEmptyDirSync('/path/to/dir');
console.log(emptySync); // true or false
import isEmptyDir, { isEmptyDirSync } from 'is-empty-dir';
const empty = await isEmptyDir('/path/to/dir');
const emptySync = isEmptyDirSync('/path/to/dir');
dirPath
(string
): Path to the directoryoptions
(object
, optional):ignore
(Array<string|RegExp|Function>
): Patterns or functions to ignore files (default:[]
)followSymlinks
(boolean
): Whether to follow symbolic links (default:false
)
- Returns:
Promise<boolean>
- Same as above, but synchronous. Returns
boolean
.
- String: Exact filename to ignore
- RegExp: Pattern to match filenames
- Function:
(filename) => boolean
custom logic
const empty = await isEmptyDir('/dir', {
ignore: [/^\./, 'node_modules']
});
- Throws if the path does not exist or is not a directory
- Throws on permission errors
MIT © 2025 opensly
If you find a bug or have a feature request, please raise an issue.
Want to contribute? Fork the repository and create a pull request with your proposed changes!