Composable directory statistics fetcher where "fs" is insufficient
Notice:
- 0.5.x is the latest stable branch.
- 0.1.x is early-access branch. Hence, the functionalities and API are likely to have breaking changes, even in minor and patch releases.
- Node.js >= v8.0.0
Notice:
- To use directory-stat as a standalone CLI app, you need to install the package globally.
$ npm install directory-stat
or
$ npm install -g directory-stat
$ yarn add directory-stat
or
$ yarn global add directory-stat
Use -h, --help
flag to see more:
$ directory-stat --help
Composable directory statistics fetcher where "fs" is insufficient
USAGE
$ directory-stat DIR
ARGUMENTS
DIR directory
OPTIONS
-d, --depth=depth how deep in directory tree statistics should be fetched.
Unlimited if < 0
-h, --help show CLI help
-m, --[no-]minified Minify output
-o, --output=output [default: .dirstat] name of the output file
-r, --[no-]recursive [DEPRECATED] get statistics of children recursively.
This is overwritten by depth option
-v, --version show CLI version
-x, --exclude=exclude [default: ] ignore any children matching this glob
--[no-]size include size (in bytes)
--[no-]timestamp include timestamp
--[no-]type include type
DESCRIPTION
Fetch directory statistics then save to a JSON file in that directory
Example:
const fsModule = require('fs')
let fs = fsModule.promises
if (!fs) {
const { promisify } = require('util')
fs = { readFile: promisify(fsModule.readFile) }
}
const path = require('path')
const { StatWriter } = require('directory-stat')
const { StatCollector } = require('directory-stat/stat-collectors')
class FileContentCollector extends StatCollector {
constructor() {
super('content')
}
async collect(pathStr, stat) {
if (!stat.isFile()) return undefined
return fs.readFile(pathStr, { encoding: 'utf8' })
}
}
const statWriter = new StatWriter(
path.join(__dirname, 'example'),
{
depth: 1,
exclude: ['.dirstat', 'dirstat.json'],
output: 'dirstat.json',
statCollectors: [new FileContentCollector()]
},
)
statWriter.export().then(_ => console.log('Done'))
See more here.