mvdir

Move or copy files and directories. (async, recursive, across devices, copy & delete fallback, minimalistic with 0 dependencies)

Usage no npm install needed!

<script type="module">
  import mvdir from 'https://cdn.skypack.dev/mvdir';
</script>

README

NPM
Build Status install size

Why?

I did this: npm i mv,
then I saw this: + mv@2.1.1 added 15 packages,
then I said no.

It first tries fs.rename(), then falls back on fs.copyFile() and fs.unlink().

Usage:

const mvdir = require('mvdir');

await mvdir('source/file.js', 'dest/file.js'); // move file.
await mvdir('source/file.js', 'dest/');        // move file. (same as above if dest directory already exists)
await mvdir('source', 'dest');                 // move directory.
await mvdir('source', 'a/b/c/dest');           // creating necessary dirs.
await mvdir('file.js', 'D:\\file.js');         // move across drives/partitions.

// returns undefined if successful, or an error object:
const err = await mvdir('source/file.js', 'dest/file.js');
if (!err) console.log('done.');

mvdir('source/file.js', 'dest/file.js').then(err => {
  if (!err) console.log('done.');
});

Copying:

await mvdir('file1.js', 'file2.js', { copy: true });
await mvdir('dir1', 'dir2', { copy: true });

Don't overwrite:

await mvdir('file1.js', 'file2.js', { overwrite: false }); // error if file2.js already exists.
await mvdir('dir1', 'dir2', { overwrite: false });         // error if dir2     already exists.

Don't log errors:

await mvdir('dir1', 'dir2', { log: false });