$ gnpm install @wrote/read-dir-structure
@wrote/read-dir-structure
is Node.JS package to a read directory structure.
yarn add @wrote/read-dir-structure
async readDirStructure(dirPath, opts=): DirectoryStructure
getFiles(content, path): !Array<string>
There is a single default export function, import it with the following statement:
import readDirStructure from '@wrote/read-dir-structure'
The types and externs for Google Closure Compiler via Depack are defined in the _readDirStructure
namespace.
The return type of the function is a DirectoryStructure. It is a recursive object, where items have either File
, Directory
or SymLink
types specified in the type
field, and if the item is a directory, it has the content
property which is another DirectoryStructure.
Object<string, !DirectoryStructure>
Content
: The recursive content of the directory.
DirectoryStructure
: A directory structure representation.
Name | Type | Description |
---|---|---|
type | string | The type of the item. |
content | !Content | The recursive content if the item is a directory. |
async readDirStructure(
dirPath: string,
opts=: !ReadDirStructureOpts,
): DirectoryStructure
Read a directory, and return its structure as an object. Only Files
, Directories
and Symlinks
are included!
string
: Path to the directory.!ReadDirStructureOpts
(optional): The options.Reads the structure of the directory.
/* yarn example/ */
import readDirStructure from '@wrote/read-dir-structure'
(async () => {
const res = await readDirStructure('example/directory')
console.log(JSON.stringify(res, null, 2))
})()
Output for the example/directory
:
{
"content": {
"fileA-ln.txt": {
"type": "SymbolicLink"
},
"fileA.txt": {
"type": "File"
},
"fileB.txt": {
"type": "File"
},
"test.json": {
"type": "File"
},
"subdirectory": {
"content": {
"subdirFileA.txt": {
"type": "File"
},
"subdirFileB.txt": {
"type": "File"
}
},
"type": "Directory"
}
},
"type": "Directory"
}
getFiles(
content: !Content,
path: string,
): !Array<string>
After running the readDirStructure
, this function can be used to flatten the content
output and return the list of all files (not including symlinks).
!Content
: The content from the readDirStructure
result.string
: The original path to the directory./* yarn example/ */
import readDirStructure, { getFiles } from '@wrote/read-dir-structure'
(async () => {
const path = 'example/directory'
const res = await readDirStructure(path)
const files = getFiles(res.content, path)
console.log(JSON.stringify(files, null, 2))
})()
[
"example/directory/fileA.txt",
"example/directory/fileB.txt",
"example/directory/test.json",
"example/directory/subdirectory/subdirFileA.txt",
"example/directory/subdirectory/subdirFileB.txt"
]
The following errors can happen and have been context tested against:
Happens when... | code | Message |
---|---|---|
not passing any path | - |
Please specify a path to the directory |
passing a path to a symbolic link | ENOTDIR |
Path is not a directory |
passing a path to a file | ENOTDIR |
Path is not a directory |
directory does not exist | ENOENT |
ENOENT: no such file or directory, lstat '%DIRECTORY%' |
© Art Deco for Wrote 2019 | Tech Nation Visa Sucks |
---|
Copyright 2013 - present © cnpmjs.org | Home |