cpy-sync

7.0.2 • Public • Published

cpy-sync Build Status

Copy files (one after the other)

Why

  • (This fork) Parallel copying streams run really slow, I needed a version of this module that would work faster by copying one file at a time.
  • Fast by using streams.
  • Resilient by using graceful-fs.
  • User-friendly by accepting globs and creating non-existant destination directories.
  • User-friendly error messages.
  • Progress reporting.

Install

$ npm install cpy-sync

Usage

const cpy = require('cpy-sync');
 
(async () => {
    await cpy(['src/*.png', '!src/goat.png'], 'dist');
    console.log('Files copied!');
})();

API

cpy(files, destination, [options])

files

Type: string Array

Files to copy.

destination

Type: string

Destination directory.

options

Type: Object

Options are passed to cp-file and globby.

cwd

Type: string
Default: process.cwd()

Working directory to find source files.

parents

Type: boolean
Default: false

Preserve path structure.

rename

Type: string Function

Filename or function returning a filename used to rename every file in files.

cpy('foo.js', 'destination', {
    rename: basename => `prefix-${basename}`
});

Progress reporting

cpy.on('progress', handler)

handler(progress)

Type: Function

progress
{
    completedFiles: Number,
    totalFiles: Number,
    completedSize: Number
}
  • completedSize is in bytes
  • percent is a value between 0 and 1

Note that the .on() method is available only right after the initial cpy call, so make sure you add a handler before calling .then():

(async () => {
    await cpy(source, destination).on('progress', progress => {
        // …
    });
})();

Related

License

MIT © Sindre Sorhus

Package Sidebar

Install

npm i cpy-sync

Weekly Downloads

2

Version

7.0.2

License

MIT

Unpacked Size

7.89 kB

Total Files

5

Last publish

Collaborators

  • jeanlescure