Skip to content

mrmlnc/scandir-native

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1742829 · May 14, 2018

History

11 Commits
Oct 14, 2017
May 14, 2018
Oct 14, 2017
Oct 14, 2017
Oct 14, 2017
Oct 14, 2017
Oct 14, 2017
May 13, 2018
Oct 14, 2017
Nov 16, 2017
May 13, 2018
Oct 14, 2017
May 14, 2018
Oct 14, 2017
Oct 14, 2017

Repository files navigation

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.