UNPKG

fs-listr

Version:

List of files and directories from a specific path.

55 lines (32 loc) 1.32 kB
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); };