recursive copy
Copy a file or directory. The directory can have contents.
rcpy serves as a drop-in replacement of ncp and fs-extra's copy function (rcpy passes most of fs-extra's test cases). It can also be used as a polyfill for Node.js fs.cp API.
# npm
npm i rcpy
# yarn
yarn add rcpy
# pnpm
pnpm i rcpy// CommonJS
const { rcpy } = require('rcpy');
// or
const { copy } = require('rcpy'); // "copy" is an alias of "rcpy"
// ES Module
import { rcpy } from 'rcpy';
// or
import { copy } from 'rcpy'; // "copy" is an alias of "rcpy"
(async () => {
await copy(src, dest, options);
})();src:stringThe path of the file/directory to copy. Note that ifsrcis a directory it will copy everything inside of this directory, not the entire directory itself.dest:stringThe destination of the copied file/directory. Note that currently ifsrcis a file,destcannot be a directory. This behavior might be changed in the future.option:RcpyOptionoptional.dereference:booleanoptional. Whether to dereference symbolic links, default tofalse.force:booleanoptional. Whether to overwrite existing file/directory, default totrue. Note that the copy operation will silently fail if you set this to false and the destination exists. Use theerrorOnExistoption to change this behavior.overwrite:booleanoptional. Deprecated, now is the alias offorce. Serves as a compatibility option forfs-extra.errorOnExist:booleanoptional. Whether to throw an error ifdestalready exists, default tofalse.filter:(src: string, dest: string) => boolean | Promise<boolean>optional. Filter copied files/directories, returntrueto copy,falseto skip. When a directory is skipped, all of its contents will be skipped as well.mode:numberoptional. Modifiers for copy operation, default to0. Seemodeflag offs.copyFile()preserveTimestamps:booleanoptional. Whether to preserve file timestamps, default tofalse, where the behavior is OS-dependent.concurrency:numberoptional. The number of concurrent copy operations, default to32.
- Doesn't use
graceful-fsto preventEMFILEerror.rcpyinstead provides aconcurrencyoption to limit the number of concurrent copy operations.
- Asynchronous and Promise-based API only. No synchronous API, no Node.js callback style API.
- Use
require('util').callbackifyto convertrcpyto Node.js callback style API.P
- Use
- Doesn't support
URLforsrcanddest.- PR is welcome to add
file://support.
- PR is welcome to add
- Doesn't support
recursiveoption.rcpywill always copy directories' content recursively.- PR is welcome to add this option.
- Doesn't support
verbatimSymlinksoption.rcpywill always perform path resolution for symlinks ifdereferenceoption is enabled.- PR is welcome to add this option.
- Extra
concurrencyoption.rcpywill use this option to limit the number of concurrent copy operations to preventEMFILEerror.
rcpy © Sukka, Released under the MIT License.
Authored and maintained by Sukka with help from contributors (list).
Personal Website · Blog · GitHub @SukkaW · Telegram Channel @SukkaChannel · Mastodon @sukka@acg.mn · Twitter @isukkaw · Keybase @sukka