/kopeer

Lean library to copy files and folders recursively, asynchronously.

Primary LanguageJavaScript

Kopeer

npm version build status Build status dependencies status

Lean library to copy files and folders recursively, asynchronously.

Install

npm install kopeer

kopeer(source, destination [, options] [, callback])

Infer the type of op by looking at the source file or folder and perform kopeer.directory(..) if source is folder and kopeer.file(..) if source is a file.

kopeer('/files', '/backup', function(err) { /* ... */ });

For available options, check kopeer.file and kopeer.directory below. The options are passed along as they are. Just note that If a callback is not provided, a promise is returned instead.


kopeer.file(source, destination [, options] [, callback])

Copy a file from source to destination, creating intermediate directories as required.

kopeer.file('/files/foo', '/backup/bar', function(err) { /* ... */ });

Usage

  • source (String)

    • The path to the file to copy.
  • destination (String)

    • The path to the file to write to.

      Note: Any intermediate directories leading up to destination will be created automatically.

      New: As of version 0.2.0, destination can denote a directory. In this case, the destination is resolved to destination/{source-filename}. See the example for more information.

  • options (Object) [default: undefined]

    • options.dereference (Bool) [default: false]

      • If given and true, resolve any symlinked files and folders and copy the actual contents. Otherwise, write the linked file as the target file.
    • options.limit (Int) [default: 512]

      • The limit of concurrently opened files. A higher limit is faster but risks EMFILE errors, while a lower limit is slower but safer.

        Only applies if options.dereference === true and the location pointed to by source turns out to be directory. Note that the directory pointed to will also be fully dereferenced.

  • callback (Function) [default: undefined]

    • Invoke the given node-style callback with any errors and no result:

      function(err) { /*...*/ }

kopeer.directory(source, destination [, options] [, callback])

Copy a folder recursively from source to destination, creating intermediate directories as required.

kopeer.directory('/files', '/backup', function(err) { /* ... */ });

Usage

  • source (String)

    • The path to the directory to copy
  • destination (String)

    • The path to the directory to copy to.

      Note: Any intermediate directories leading up to destination will be created automatically.

  • options (Object) [default: undefined]

    • options.filter (Function: Filepath -> Bool) [default: noop]

      • Given the target path, decide whether to include this file.
    • options.ignore (String|Array<String>) [default: []] since v1.0.0

      • Given a list of patterns to ignore, create a minimatch filter from each and apply to each path.
    • options.dereference (Bool) [default: false]

      • If true, copy symlinked files and folders into the target file tree.
    • options.rename (Function: Filepath -> Filepath) [default: noop]

      • Given the target path, return a new target path.
    • options.limit (Int) [default: 512]

      • The limit of concurrently opened files.

        A higher limit is faster but risks EMFILE errors, while a lower limit is slower but safer.

  • callback (Function) [default: undefined]

    • Invoke the given node-style callback with any errors and no result:

      function(err) { /*...*/ }

Contributing

Business as usual. Get started by running the test suite:

npm install
npm test

Then fix bug / add feature and submit a pull request.