node-remove
v1.0.2
Published
Delete files and directories
Downloads
9
Maintainers
Readme
node-remove
Delete files and directories using globs
Similar to rimraf, but with a Promise API and support for multiple files and globbing. It also protects you against deleting the current working directory and above.
Install
npm install node-remove
// Or
yarn add node-remove
Usage
const nodeRemove = require('node-remove');
(async () => {
const deletedFilePaths = await nodeRemove['temp/*.js', '!temp/unicorn.js']);
const deletedDirectoryPaths = await nodeRemove['temp', 'public']);
console.log('Deleted files:\n', deletedFilePaths.join('\n'));
console.log('\n\n');
console.log('Deleted directories:\n', deletedDirectoryPaths.join('\n'));
})();
Beware
The glob pattern **
matches all children and the parent.
So this won't work:
nodeRemove.sync(['public/assets/**', '!public/assets/goat.png']);
You have to explicitly ignore the parent directories too:
nodeRemove.sync(['public/assets/**', '!public/assets', '!public/assets/goat.png']);
To delete all subdirectories inside public/
, you can do:
nodeRemove.sync(['public/*/']);
Suggestions on how to improve this welcome!
API
Note that glob patterns can only contain forward-slashes, not backward-slashes. Windows file paths can use backward-slashes as long as the path does not contain any glob-like characters, otherwise use path.posix.join()
instead of path.join()
.
nodeRemove patterns, options?)
Returns Promise<string[]>
with the deleted paths.
nodeRemove.sync(patterns, options?)
Returns string[]
with the deleted paths.
patterns
Type: string | string[]
See the supported glob patterns.
options
Type: object
You can specify any of the globby
options in addition to the below options. In contrast to the globby
defaults, expandDirectories
, onlyFiles
, and followSymbolicLinks
are false
by default.
force
Type: boolean
Default: false
Allow deleting the current working directory and outside.
dryRun
Type: boolean
Default: false
See what would be deleted.
const nodeRemove = require('node-remove');
(async () => {
const deletedPaths = await nodeRemove['temp/*.js'], {dryRun: true});
console.log('Files and directories that would be deleted:\n', deletedPaths.join('\n'));
})();