Lightweight, fast, simple and flexible file copy utility for Node.js
MIT License
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
: string
The path of the file/directory to copy. Note that if src
is a directory it will copy everything inside of this directory, not the entire directory itself.dest
: string
The destination of the copied file/directory. Note that currently if src
is a file, dest
cannot be a directory. This behavior might be changed in the future.option
: RcpyOption
optional.
dereference
: boolean
optional. Whether to dereference symbolic links, default to false
.force
: boolean
optional. Whether to overwrite existing file/directory, default to true
. Note that the copy operation will silently fail if you set this to false and the destination exists. Use the errorOnExist
option to change this behavior.overwrite
: boolean
optional. Deprecated, now is the alias of force
. Serves as a compatibility option for fs-extra
.errorOnExist
: boolean
optional. Whether to throw an error if dest
already exists, default to false
.filter
: (src: string, dest: string) => boolean | Promise<boolean>
optional. Filter copied files/directories, return true
to copy, false
to skip. When a directory is skipped, all of its contents will be skipped as well.mode
: number
optional. Modifiers for copy operation, default to 0
. See mode
flag of fs.copyFile()
preserveTimestamps
: boolean
optional. Whether to preserve file timestamps, default to false
, where the behavior is OS-dependent.concurrency
: number
optional. The number of concurrent copy operations, default to 32
.rcpy
and fs-extra
graceful-fs
to prevent EMFILE
error.
rcpy
instead provides a concurrency
option to limit the number of concurrent copy operations.require('util').callbackify
to convert rcpy
to Node.js callback style API.Prcpy
and Node.js fs.cp()
URL
for src
and dest
.
file://
support.recursive
option.
rcpy
will always copy directories' content recursively.verbatimSymlinks
option.
rcpy
will always perform path resolution for symlinks if dereference
option is enabled.concurrency
option.
rcpy
will use this option to limit the number of concurrent copy operations to prevent EMFILE
error.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 @[email protected] · Twitter @isukkaw · Keybase @sukka