Return an array containing all recursive files and directories under a given
directory, similar to Unix find. Follows symlinks. Bare-bones, but
very fast.
Similar to wrench.readdirSyncRecursive,
but adds trailing slashes to directories.
Not to be confused with node-walk, which has both an asynchronous and a synchronous API.
yarn add walk-syncconst walkSync = require('walk-sync');
const paths = walkSync('project')Given project/one.txt and project/subdir/two.txt, paths will be the following
array:
['one.txt', 'subdir/', 'subdir/two.txt']Directories come before their contents, and have a trailing forward-slash (on all platforms).
Symlinks are followed.
Sometimes, it is important to get additional information from a walk of a directory; for instance if the downstream consumer needs to stat the files we can leverage the stats from the walk.
To accommodate, walkSync.entries(path [, options]) is also provided, instead
of returning a list of files and/or directories it returns an array of objects
which correspond to a given file or directory, except with more data.
entry.relativePath
entry.mode // => fs.statSync(fullPath).mode
entry.size // => fs.statSync(fullPath).size
entry.mtime // => fs.statSync(fullPath).mtime.getTime()
entry.isDirectory() // => true if directory
-
globs: An array of globs. Only files and directories that match at least one of the provided globs will be returned.const paths = walkSync('project', { globs: ['subdir/**/*.txt'] }); // => ['subdir/two.txt']
As an alternative to string globs, you can pass an array of precompiled
minimatch.Minimatchinstances. This is faster and allows to specify your own globbing options. -
directories(default: true): Passfalseto only return files, not directories:const paths = walkSync('project', { directories: false }) // => ['one.txt', 'subdir/two.txt']
-
ignore: An array of globs. Files and directories that match at least one of the provided globs will be pruned while searching.const paths = walkSync('project', { ignore: ['subdir'] }) // => ['one.txt']
-
includeBasePath(default: false): Passtrueto include the basePath in the output. note: this flag is only forwalkSync(..)notwalkSync.entries(..)const paths = walkSync('project', { includeBasePath: true }); // => ['project/one.txt', 'project/subdir/two.txt']
walkSync(baseDir) is a faster substitute for
glob.sync('**', {
cwd: baseDir,
dot: true,
mark: true,
strict: true
})