copy(src, dest, [options, callback])

copy(src, dest, [options, callback])

Copy a file or directory. The directory can have contents. Like cp -r.

  • src <String>
  • dest <String>
  • options <Object>
    • overwrite <boolean>: overwrite existing file or directory, default is 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.
    • errorOnExist <boolean>: when overwrite is false and the destination exists, throw an error. Default is false.
    • dereference <boolean>: dereference symlinks, default is false.
    • preserveTimestamps <boolean>: will set last modification and access times to the ones of the original source files, default is false.
    • filter <Function>: Function to filter copied files. Return true to include, false to exclude. This can also be a RegExp, however this is deprecated (See issue #239 for background).
  • callback <Function>

Example:

const fs = require('fs-extra')

fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
  if (err) return console.error(err)

  console.log('success!')
}) // copies file

fs.copy('/tmp/mydir', '/tmp/mynewdir', err => {
  if (err) return console.error(err)

  console.log('success!')
}) // copies directory, even if it has subdirectories or files

// Promise usage:
fs.copy('/tmp/myfile', '/tmp/mynewfile')
.then(() => {
  console.log('success!')
})
.catch(err => {
  console.error(err)
})

Using filter function

const fs = require('fs-extra')

const filterFunc = (src, dest) => {
  // your logic here
  // it will be copied if return true
}

fs.copy('/tmp/mydir', '/tmp/mynewdir', { filter: filterFunc }, err => {
  if (err) return console.error(err)

  console.log('success!')
})