scandir-native

A fs.scandir method with some features


Keywords
fs, scandir, dirent, performance, directory
License
MIT
Install
npm install scandir-native@1.0.2

Documentation

scandir-native

A fs.scandir method with some features.

Donate

If you want to thank me, or promote your Issue.

Donate

Sorry, but I have work and support for plugins and modules requires some time after work. I will be glad of your support or PR's.

Install

$ npm i scandir-native

⚠️ Compiling on Windows machines requires the node-gyp prerequisites.

Supports

  • Node.js (4, 6, 8 and etc.)
  • Node.js with ChakraCore (below 8.4.0 on macOS and Linux (works fine on Windows), see this issue)

Why?

Usage

const scandir = require('scandir-native');

scandir.scandir('.', (err, entries) => {
	if (err) {
		console.error(err); // Standard FS errors
		return;
	}

	console.dir(entries, { colors: true });
	// [{ name: 'filepath', type: 2 }, { name: 'dirpath', type: 1 }]
});

API

FS_TYPE_CONSTANTS

0 is 'FS_UNKNOWN'
1 is 'FS_FILE'
2 is 'FS_DIR'
3 is 'FS_LINK'
4 is 'FS_FIFO'
5 is 'FS_SOCKET'
6 is 'FS_CHAR'
7 is 'FS_BLOCK'

Enum for entry type builded from and for uv_dirent_type_t.

IScandirEntry

TypeScript interface for each entry in the directory.

.scandir(path, callback) => void

Asynchronous scandir(3). Reads the contents of a directory. The callback gets two arguments (err, entries) where entries is an array of objects (name and type) of the files in the directory excluding . and ...

.scandirSync(path) => IScandirEntry[]

Synchronous scandir(3). Returns an array of objects (name and type) excluding . and ...

Example

const scandir = require('scandir-native');

const dirs: string[] = [];
const nonDirs: string[] = [];

scandir.scandir('.', (err, entries) => {
	if (err) {
		console.error(err); // Standard FS errors
		return;
	}

	entries.forEach((entry) => {
		if (entry.type === scandir.FS_TYPE_CONSTANTS.FS_DIR) {
			dirs.push(entry.name);
		} else {
			nonDirs.push(entry.name);
		}
	})
});

Changelog

See the Releases section of our GitHub project for changelogs for each release version.

License

This software is released under the terms of the MIT license.