1.0.11 • Published 6 years ago

scan-dir-recursive v1.0.11

Weekly downloads
25
License
MIT
Repository
github
Last release
6 years ago

NPM version Build Status

Scan-dir-recursive

Scan-dir-recursive is a small library that allows you to list all files in a directory recursively with the possibility of ignoring some.

Installation

npm install scan-dir-recursive

Getting started

const scan = require("scan-dir-recursive");

scan(__dirname, function(files){
	console.log("Files:\n", files.join("\n"));
});

Api documentation

Async or sync

By default, a scan is done asynchronously but it is possible to do them synchronously too.

// Async
const scanAsync = require("scan-dir-recursive");
// or
const scanAsync = require("scan-dir-recursive/async");

// Sync
const scanSync = require("scan-dir-recursive/sync");

scanDirRecursive(directory, done, ignore)

  • directory:String - Absolute path to the directory to scan
  • done:Function - Function to call when the scan is complete. Receive an Array of filenames as an argument
  • [ignore:Array] - Array of files to ignore

Promise

It is possible to use the async version with a javascript Promise.

const scan = require("scan-dir-recursive/promise");

scan(__dirname, IGNORED)
	.then(function(files){
		console.log("Files:\n", files.join("\n"));
	});

Notice that the done parameter is omitted since it is replaced by the Promise.

scanDirRecursive(directory, ignore)

  • directory:String - Absolute path to the directory to scan
  • [ignore:Array] - Array of files to ignore

Returns a Promise that receive an Array of filenames when it resolve

Absolute path or relative path

By default, the files are listed with their absolute path. It is possible to get a path relative to the specified directory by using the relative version of the script.

const DIR = "/home/myUser/myProject/src";

// Absolute path

const absolute = require("scan-dir-recursive");

absolute(DIR, function(files){
	console.log(files.join("\n"));
	// "/home/myUser/myProject/src/file.js"
	// "/home/myUser/myProject/src/someDir/other.js"
});

// Relative path

const relative = require("scan-dir-recursive/relative");

relative(DIR, function(files){
	console.log(files.join("\n"));
	// "file.js"
	// "someDir/other.js"
});

Ignoring files

You can specify an Array of filenames or glob pattern to ignore in the results.

Assuming we have the following directory structure in /home/myUser/myProject/src

src/
   |- a.js 
   |- b
   |  |-- b1/
   |  |     |-- b1.js
   |  |-- b2/
   |        |-- b2.js

When we run the following, the b/b1 branch and all its content will be ignored.

const path = require("path");
const scan = require("scan-dir-recursive");

const DIR = "/home/myUser/myProject/src";

const IGNORED = [
	path.resolve(DIR, "b/b1"), 	// Ignored with absolute path
	"b/b1" 						// Ignored with relative path
	"**/b/b1/**"                // Ignored with glob pattern
];

function onComplete(files){
	console.log(files);
}

scan(DIR, onComplete, IGNORED);
// [
//	 "a.js",
//	 "b/b.js",
//	 "b/b2/b2.js"
// ]

// Ignored: "b/b1/b1.js",

Glob patterns are tested with the minimatch module. See their documentation for more information on how to use glob patterns.

Tests

Test can be run by using the test command:

npm run test

Coverage data can also be generated by running the coverage command:

npm run coverage

To view the coverage report, open coverage/lcov-report/index.html in the browser of your choice.

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago