Skip to content

Instantly share code, notes, and snippets.

Embed
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);
};
@skovalyov

This comment has been minimized.

Copy link

commented Jan 23, 2013

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

@silentroach

This comment has been minimized.

Copy link

commented Feb 15, 2013

why sync?

@metal3d

This comment has been minimized.

Copy link

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

This comment has been minimized.

Copy link

commented Jun 9, 2013

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

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

@azaslavsky

This comment has been minimized.

Copy link

commented May 13, 2014

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

This comment has been minimized.

Copy link

commented Aug 30, 2014

Thanks!

@meteormatt

This comment has been minimized.

Copy link

commented Oct 16, 2014

Thanks!

@isiahmeadows

This comment has been minimized.

Copy link

commented Dec 27, 2014

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

This comment has been minimized.

Copy link

commented Oct 9, 2015

Works like a charm. Thanks!

@camelaissani

This comment has been minimized.

Copy link

commented Apr 17, 2016

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

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

@teratzul

This comment has been minimized.

Copy link

commented Sep 5, 2017

Works great! Thank you!!

@cancerberoSgx

This comment has been minimized.

Copy link

commented May 30, 2019

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.