What is walk-sync?
The walk-sync npm package is designed to provide a simple and efficient way to recursively list all files and directories within a given directory, similar to the Unix 'find' command. It is particularly useful for tasks involving file system traversal, such as building file trees, indexing project files, or performing batch operations on multiple files.
What are walk-sync's main functionalities?
Basic Directory Listing
This feature allows you to list all files and directories within a specified directory. The result is an array of strings, each representing a path relative to the initial directory.
const walkSync = require('walk-sync');
const paths = walkSync('path/to/directory');
console.log(paths);
Directory Listing with Options
This feature enhances the basic directory listing by allowing you to specify options such as excluding directories from the output or filtering files by glob patterns. This is useful for more targeted file system operations.
const walkSync = require('walk-sync');
const options = { directories: false, globs: ['**/*.js'] };
const paths = walkSync('path/to/directory', options);
console.log(paths);
Directory Listing with Entry Objects
This feature returns detailed information about each file and directory in the form of entry objects, including properties like size and relativePath. This is useful for applications that need more information about file system entries than just their paths.
const walkSync = require('walk-sync');
const options = { directories: true, includeBasePath: true, entries: true };
const entries = walkSync('path/to/directory', options);
entries.forEach(entry => {
console.log(entry.relativePath, entry.size);
});
Other packages similar to walk-sync
glob
The 'glob' package provides pattern matching functionality to filter files in the file system. It is similar to walk-sync in its ability to traverse directories, but it focuses more on matching files against specified patterns rather than listing all files.
readdirp
Similar to walk-sync, 'readdirp' allows for recursive directory listing with a focus on streaming the results. It offers a more event-driven approach, making it suitable for scenarios where processing large directories without blocking the event loop is important.
fast-glob
This package is an alternative to walk-sync that emphasizes performance and supports multiple patterns for file matching. 'fast-glob' is designed for speed and efficiency, making it a good choice for projects requiring fast file searching capabilities.
node-walk-sync
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.
Installation
npm install --save walk-sync
Usage
var walkSync = require('walk-sync');
var paths = walkSync('foo')
Given foo/one.txt
and foo/subdir/two.txt
, paths
will be the following
array:
['one.txt', 'subdir/', 'subdir/two.txt']
Note that directories come before their contents, and have a trailing slash.
Symlinks are followed.
Globs
Similarly to node-glob, walkSync
can use globs to further refine the output.
The difference is walkSync
accepts are array of globs:
var walkSync = require('walk-sync', ['**/*.js']);
Given foo/one.js
and foo/two.txt
, bar.jss
will be the following
array:
['bar.js', 'foo/two.js']
Background
walkSync(baseDir)
is a faster substitute for
glob.sync('**', {
cwd: baseDir,
dot: true,
mark: true,
strict: true
})