@wrote/read-dir-structure
v1.3.1
Published
Reads directory structure.
Downloads
871
Maintainers
Readme
@wrote/read-dir-structure
@wrote/read-dir-structure
is Node.JS package to a read directory structure.
yarn add @wrote/read-dir-structure
Table Of Contents
- Table Of Contents
- API
- Types
async readDirStructure(dirPath, opts=): DirectoryStructure
getFiles(content, path): !Array<string>
- Reasons for Errors
- Copyright
API
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.
Types
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!
- dirPath*
string
: Path to the directory. - opts
!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
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* !Content: The content from the
readDirStructure
result. - path*
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"
]
Reasons for Errors
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%' |