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

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

  • src <String>
  • dest <String> Note that if src is a file, dest cannot be a directory (see issue #323).
  • 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:

  1. const fs = require('fs-extra')
  2. fs.copy('/tmp/myfile', '/tmp/mynewfile', err => {
  3. if (err) return console.error(err)
  4. console.log('success!')
  5. }) // copies file
  6. fs.copy('/tmp/mydir', '/tmp/mynewdir', err => {
  7. if (err) return console.error(err)
  8. console.log('success!')
  9. }) // copies directory, even if it has subdirectories or files
  10. // Promise usage:
  11. fs.copy('/tmp/myfile', '/tmp/mynewfile')
  12. .then(() => {
  13. console.log('success!')
  14. })
  15. .catch(err => {
  16. console.error(err)
  17. })

Using filter function

  1. const fs = require('fs-extra')
  2. const filterFunc = (src, dest) => {
  3. // your logic here
  4. // it will be copied if return true
  5. }
  6. fs.copy('/tmp/mydir', '/tmp/mynewdir', { filter: filterFunc }, err => {
  7. if (err) return console.error(err)
  8. console.log('success!')
  9. })