Recursive file operations in Node.js
This repository has been archived on 2026-03-31. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Find a file
donaldpipowitch eb1bf2399b - added to new properties to opts param in copyDirSyncRecursive:
-- opts.filter (RegExp): a RegExp which could look like this: /^CVS$|.idea$|.DS_Store$/. If added, every file or directory which matches the RegExp will be ignored. In this example every "CVS" directory and all ".idea" and ".DS_Stores" files would be ignored.
-- opts.filter (Boolean): If set tu true, the RegExp in opts.filter will be used as a whitelist. Every file or directory which DOESN'T match opts.filter will be ignored.
2012-07-05 10:08:28 +03:00
lib - added to new properties to opts param in copyDirSyncRecursive: 2012-07-05 10:08:28 +03:00
tests Merge pull request #27 from domenic/dev-niceties 2012-05-16 08:33:13 -07:00
.gitignore Add npm-debug.log to .gitignore. 2012-05-14 19:14:16 -04:00
LICENSE Fix year... 2010-10-22 12:43:32 -04:00
package.json Merge branch 'master' of github.com:ryanmcgrath/wrench-js 2012-05-17 00:38:35 +09:00
readme.md Version bump, README discrepancy fix, point release 2012-02-23 05:28:10 -05:00

wrench.js - Recursive file operations in Node.js

While I love Node.js, I've found myself missing some functions. Things like recursively deleting/chmodding a directory (or even deep copying a directory), or even a basic line reader, shouldn't need to be re-invented time and time again.

That said, here's my attempt at a re-usable solution, at least until something more formalized gets integrated into Node.js (hint hint). wrench.js is fairly simple to use - check out the documentation/examples below:

Installation

npm install wrench

Usage

var wrench = require('wrench'),
	util = require('util');

Synchronous operations

// Recursively create directories, sub-trees and all.
wrench.mkdirSyncRecursive(dir, 0777);

// Recursively delete the entire sub-tree of a directory, then kill the directory
wrench.rmdirSyncRecursive('my_directory_name', failSilently);

// Recursively read directories contents.
wrench.readdirSyncRecursive('my_directory_name');

// Recursively chmod the entire sub-tree of a directory
wrench.chmodSyncRecursive('my_directory_name', 0755);

// Recursively chown the entire sub-tree of a directory
wrench.chownSyncRecursive("directory", uid, gid);

// Deep-copy an existing directory
wrench.copyDirSyncRecursive('directory_to_copy', 'location_where_copy_should_end_up');

// Read lines in from a file until you hit the end
var f = new wrench.LineReader('x.txt');
while(f.hasNextLine()) {
	util.puts(x.getNextLine());
}

Asynchronous operations

// Recursively read directories contents
var files = [];
wrench.readdirRecursive('my_directory_name', function(error, curFiles) {
    // curFiles is what you want
});

Questions, comments? Hit me up. (ryan [at] venodesigns.net | http://twitter.com/ryanmcgrath)