fs-listr
Version:
List of files and directories from a specific path.
55 lines (32 loc) • 1.32 kB
JavaScript
const fs = require('fs');
var traverseFileSystem = function (currentPath, config, excluded_directories) {
var pathIsFile = fs.statSync(currentPath).isFile();
var options = config ? config : {};
var relativePath = options.relativePath;
var type = pathIsFile ? 'file' : 'directory';
var result = {
type: type
};
if(pathIsFile){
result.name = relativePath;
return result;
}
var files = fs.readdirSync(currentPath);
result.contents = [];
for (var i in files) {
var currentFile = currentPath + '/' + files[i];
var stats = fs.statSync(currentFile);
if (stats.isFile()) {
result.contents.push({name: files[i], type: 'file'});
} else if (stats.isDirectory() && excluded_directories.indexOf(files[i]) === -1) {
options.relativePath = files[i];
var directoryFiles = traverseFileSystem(currentFile, options, excluded_directories);
result.contents.push({name: files[i], type: 'directory', contents: directoryFiles.contents});
}
}
return result;
};
module.exports = function(path, excluded_directories) {
var excluded = Array.isArray(excluded_directories) ? excluded_directories : [];
return traverseFileSystem(path, null, excluded);
};