Create a gist now

Instantly share code, notes, and snippets.

rmdir recursively in node.js
var fs = require("fs");
var path = require("path");
var rmdir = function(dir) {
var list = fs.readdirSync(dir);
for(var i = 0; i < list.length; i++) {
var filename = path.join(dir, list[i]);
var stat = fs.statSync(filename);
if(filename == "." || filename == "..") {
// pass these files
} else if(stat.isDirectory()) {
// rmdir recursively
rmdir(filename);
} else {
// rm fiilename
fs.unlinkSync(filename);
}
}
fs.rmdirSync(dir);
};
@skovalyov

Thank you for this Gist. Just made a CoffeeScript clone of it at https://gist.github.com/4605986

@silentroach

why sync?

@metal3d
metal3d commented Apr 11, 2013

@silentroach this is made to not be synchroneous. Sometimes (as for my use case) this is pretty nice to work synchroneously

@playerwtf

You can safely remove the check for "." and ".." see documentation for nodejs

"Synchronous readdir(3). Returns an array of filenames excluding '.' and '..'."

@azaslavsky

Not sure if this is of any interest to anybody, but I made a fork of this gist that recursively deletes only empty directories. If a directory (or any of its descendant directories) has content inside it, it is left alone:

https://gist.github.com/azaslavsky/661020d437fa199e95ab

@ajwinn
ajwinn commented Aug 30, 2014

Thanks!

@meteormatt

Thanks!

@isiahmeadows

This indirectly inspired me to implement the same functionality, both synchronously and asynchronously, in LiveScript. The async one uses Promises underneath, but its global API is nodeback-based.

@aseigneurin

Works like a charm. Thanks!

@camelaissani

My implementation to remove recursively but without using recursive method. Just in case of deeper directory tree.

https://gist.github.com/camelaissani/ab4a9e6d69088d6f03a46ee2fd4fd112

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment