JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 871
  • Score
    100M100P100Q96938F
  • License MIT

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

Package Exports

  • mvdir
  • mvdir/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mvdir) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

NPM
GitHub tag Build Status install size GitHub issues

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('C:\\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 });