Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
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);
};

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

why sync?

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

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

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

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 commented Aug 30, 2014

Thanks!

Thanks!

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.

Works like a charm. Thanks!

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

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

teratzul commented Sep 5, 2017

Works great! Thank you!!

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