Skip to content

Instantly share code, notes, and snippets.

@tkihira
Created April 12, 2012 13:02
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save tkihira/2367067 to your computer and use it in GitHub Desktop.
Save tkihira/2367067 to your computer and use it in GitHub Desktop.
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
Copy link

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

@silentroach
Copy link

why sync?

@metal3d
Copy link

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
Copy link

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

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

@azaslavsky
Copy link

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
Copy link

ajwinn commented Aug 30, 2014

Thanks!

@meteormatt
Copy link

Thanks!

@dead-claudia
Copy link

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
Copy link

Works like a charm. Thanks!

@camelaissani
Copy link

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

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

@teratzul
Copy link

teratzul commented Sep 5, 2017

Works great! Thank you!!

@cancerberoSgx
Copy link

thanks! and thanks for the synchronous signature too! :P

@wulinjie122
Copy link

thanks, help me so much.

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