Product
Introducing Ruby Support in Socket
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
A collection of recursive filesystem utilities.
npm install recur-fs
var fs = require('recur-fs');
// Gather all nested files and directories
fs.readdir('/some/directory', function(err, resources) {
// Do something with 'resources'
});
readdir(directory, visitor(resource, stat, next), fn(err, resources)) Recursively read contents of directory
, returning all resources. visitor
is an optional function called on each resource. Calling next(false)
from visitor
will exclude resource from the collection.
fs.readdir('/some/directory', function (err, resources) {
// Do something with 'resources'
});
fs.readdir('/some/other/directory', function (resource, stat, next) {
// Return 'false' to skip adding to 'resources'
next(stat.isFile());
}, function(err, resources) {
// Do something with 'resources'
});
readdir.sync(directory, visitor(resource, stat)) Synchronously, recursively read contents of directory
, returning all resources. visitor
is an optional function called on each resource. Returning false
from visitor
will exclude resource from the collection.
var resources = fs.readdir.sync('/some/directory');
var files = fs.readdir.sync('/some/other/directory', function (resource, stat) {
// Return 'false' to skip adding to 'resources'
return stat.isFile();
});
walk(directory, visitor(resource, stat, next), fn(err)) Walk up filesystem tree from directory
, passing all resources to visitor
, and stopping when root directory is reached. Calling next(true)
will abort walking before completion.
fs.walk('/some/directory', function (resource, stat, next) {
// Return 'true' to stop walking
next(resource == 'index.js');
}, function (err) {
// Handle error
});
walk.sync(directory, visitor(resource, stat)) Synchronously walk up filesystem tree from directory
, passing all resources to visitor
, and stopping when root directory is reached, or visitor returns true
.
fs.walk.sync('/some/directory', function (resource, stat) {
// Do something with resource
});
hunt(directory, matcher(resource, stat, next), stopOnFirstMatch, fn(err, matches)) Walk up filesystem tree from directory
, returning all resources matched with matcher
, and stopping when root directory is reached, or after first match if stopOnFirstMatch=true
.
matcher
can be a glob-type string (see minimatch), or function calling next(true)
to signal a match. In addition, next
also accepts a second argument in order to abort before completion.
fs.hunt('/some/directory', '*.js', false, function (err, matches) {
// Do something with matching js files
});
fs.hunt('/some/directory', '*.css', true, function (err, match) {
// Do something with single matching css file
});
fs.hunt('/some/other/directory', function (resource, stat, next) {
if (resource == 'index.js') {
// Return second argument to stop walking
next(true, true);
} else {
next(false);
}
}, false, function (err, matches) {
// Do something with matches
});
hunt.sync(directory, matcher(resource, stat), stopOnFirstMatch) Synchronously walk up filesystem tree from directory
, returning all resources matched with matcher
, and stopping when root directory is reached, or after first match if stopOnFirstMatch=true
.
matcher
can be a glob-type string (see minimatch), or function returning true
to signal a match.
var jsFiles = fs.hunt.sync('/some/directory', '*.js', false);
var cssFile = fs.hunt.sync('/some/directory', '*.css', true);
var index = fs.hunt.sync('/some/other/directory', function (resource, stat) {
return (resource == 'index.js');
}, true);
cp(source, destination, force, fn(err, filepath)) Recursively copy source
to destination
(cp -r
). Copies contents of source
directory if path contains a trailing /
. force=true
will overwrite destination
if it already exists.
fs.cp('/some/file', '/some/destination', true, function(err, filepath) {
// Do something with new 'filepath'
});
// Copy directory contents (note trailing slash)
fs.cp('/some/directory/contents/', '/some/destination', true, function(err, filepath) {
// Do something with new 'filepath'
});
cp.sync(source, destination, force) Synchronously, recursively copy source
to destination
(cp -r
). Copies contents of source
directory if path contains a trailing /
. force=true
will overwrite destination
if it already exists.
var filepath = fs.cp('/some/file', '/some/destination', true);
mkdir(directory, fn(err)) Recursively create nested directory
(mkdir -p
). If directory
looks like a filepath (has .extension), directories will be created at path.dirname(directory)
.
fs.mkdir('/some/directory', function(err) {
// Do something
});
mkdir.sync(directory) Synchronously, recursively create nested directory
(mkdir -p
). If directory
looks like a filepath (has .extension), directories will be created at path.dirname(directory)
.
fs.mkdir.sync('/some/directory');
mv(source, destination, force, fn(err, filepath)) Move source
to destination
, including all contents of source
if directory. force=true
will overwrite destination
if it already exists.
fs.mv('/some/file', '/some/destination', function(err, filepath) {
// Do something with new 'filepath'
});
mv.sync(source, destination, force) Synchronously move source
to destination
, including all contents of source
if directory. force=true
will overwrite destination
if it already exists.
fs.mv.sync('/some/file', '/some/destination');
rm(source, fn(err)) Recursively remove source
(rm -rf
). Prevents removal of resources outside of process.cwd()
.
fs.rm('/some/directory/and/children', function(err) {
// Do something when complete
});
rm.sync(source) Synchronously, recursively remove source
(rm -rf
). Prevents removal of resources outside of process.cwd()
.
fs.rm.sync('/some/directory/and/children');
indir(directory, filepath) Check that filepath
is likely child of directory
. NOTE: only makes string comparison.
fs.indir('/some/directory', '/some/directory/file');
FAQs
A collection of recursive filesystem utilities
The npm package recur-fs receives a total of 475 weekly downloads. As such, recur-fs popularity was classified as not popular.
We found that recur-fs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket is launching Ruby support for all users. Enhance your Rails projects with AI-powered security scans for vulnerabilities and supply chain threats. Now in Beta!
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.