Popularity
3.4
Growing
Activity
5.7
Growing
238
12
38

Code Quality Rank: L5
Monthly Downloads: 0
Programming language: JavaScript
License: MIT License
Tags: Command Line Apps     Stream     Copy     Data     Content     Fast     Files     File     Fs     File System     Contents     Quick     Ncp     Glob     Clone     Cpy     Cp    
Latest version: v7.3.0

cpy alternatives and similar modules

Based on the "Command Line Apps" category

Do you think we are missing an alternative of cpy or a related project?

Add another 'Command Line Apps' Module

README

cpy Build Status

Copy files

Why

  • Fast by using streams.
  • Resilient by using graceful-fs.
  • User-friendly by accepting globs and creating non-existent destination directories.
  • User-friendly error messages.
  • Progress reporting.

Install

$ npm install cpy

Usage

const cpy = require('cpy');

(async () => {
    await cpy(['source/*.png', '!source/goat.png'], 'destination');
    console.log('Files copied!');
})();

API

cpy(source, destination, options?)

Returns a Promise<string[]> with the destination file paths.

source

Type: string | string[]

Files to copy.

If any of the files do not exist, an error will be thrown (does not apply to globs).

destination

Type: string

Destination directory.

options

Type: object

Options are passed to globby.

In addition, you can specify the below options.

cwd

Type: string Default: process.cwd()

Working directory to find source files.

overwrite

Type: boolean Default: true

Overwrite existing 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 source.

const cpy = require('cpy');

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

Type: number Default: (os.cpus().length || 1) * 2

Number of files being copied concurrently.

ignoreJunk

Type: boolean Default: true

Ignores junk files.

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 awaiting the promise:

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