premove
TypeScript icon, indicating that this package has built-in type declarations

4.0.0 • Public • Published

premove CI codecov

A tiny (208B to 260B) utility to remove items recursively

This is a Promise-based, cross-platform utility that recursively removes files and directories. It's effectively a programmatic rm -rf for Node.js. There's also a CLI for easy, cross-platform usage.

Notice: Node v12.10.0 includes the recursive option for fs.rmdir and fs.rmdirSync.

Install

$ npm install --save premove

Modes

There are two "versions" of premove available:

"async"

Node.js: >= 8.x
Size (gzip): 249 bytes
Availability: CommonJS, ES Module

This is the primary/default mode. It makes use of async/await and util.promisify.

"sync"

Node.js: >= 6.x
Size (gzip): 202 bytes
Availability: CommonJS, ES Module

This is the opt-in mode, ideal for scenarios where async usage cannot be supported.
In order to use it, simply make the following changes:

-import { premove } from 'premove';
+import { premove } from 'premove/sync';

Usage

import { resolve } from 'path';
import { premove } from 'premove';

// Async/await
try {
  await premove('./foobar');
} catch (err) {
  //
}

// Promise
premove('./foobar').then(val => {
  console.log(typeof val);
  //=> boolean
}).catch(err => {
  //
});

// Using `cwd` option
const dir = resolve('./foo/bar');
await premove('hello.txt', { cwd: dir });

CLI

A premove binary is available as of v3.0.0.
It accepts an optional --cwd value and a list of paths to delete.

Important: By default premove refuses to delete:

  • the os.homedir
  • the system root (/, C:\\, etc)
  • items not contained by --cwd path
# remove "foo" and "bar" via `npx`
$ npx premove foo bar

# install globally, use whenever
$ npm install premove -g
$ premove foo bar

API

premove(str, opts={})

Returns: Promise<boolean>

Returns a Promise that resolves with a boolean value.
If true, indicates that the str input did exist and was successfully removed. A false value indicates that the str input did not exist, meaning nothing needed to be removed.

Important:
The sync and async versions share the same API.
The only difference is that sync is not Promise-based.

str

Type: String

The filepath to remove – may be a file or a directory.
An initial existence check is made for this filepath.

Important: This value is resolved to a full path.
Please be aware of how and from where the Node.js file system is resolving your path!

options.cwd

Type: String
Default: .

The directory to resolve your str from.
Defaults to the process.cwd() – aka, the directory that your command is run within.

Related

  • totalist - A tiny (195B to 224B) utility to recursively list all (total) files in a directory
  • mk-dirs - A tiny (381B to 419B) utility to make a directory and its parents, recursively
  • escalade - A tiny (183B) and fast utility to ascend parent directories

License

MIT © Luke Edwards

Readme

Keywords

Package Sidebar

Install

npm i premove

Weekly Downloads

11,184

Version

4.0.0

License

MIT

Unpacked Size

9.75 kB

Total Files

10

Last publish

Collaborators

  • lukeed