Sha256: 6c9acfd568d682cec7ac75697bf79c4ad64a6e14adda4a27520464030441ab88
Contents?: true
Size: 1.62 KB
Versions: 46
Compression:
Stored size: 1.62 KB
Contents
'use strict' const fs = require('graceful-fs') const path = require('path') const ncp = require('./ncp') const mkdir = require('../mkdirs') const pathExists = require('../path-exists').pathExists function copy (src, dest, options, callback) { if (typeof options === 'function' && !callback) { callback = options options = {} } else if (typeof options === 'function' || options instanceof RegExp) { options = {filter: options} } callback = callback || function () {} options = options || {} // Warn about using preserveTimestamps on 32-bit node: if (options.preserveTimestamps && process.arch === 'ia32') { console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n see https://github.com/jprichardson/node-fs-extra/issues/269`) } // don't allow src and dest to be the same const basePath = process.cwd() const currentPath = path.resolve(basePath, src) const targetPath = path.resolve(basePath, dest) if (currentPath === targetPath) return callback(new Error('Source and destination must not be the same.')) fs.lstat(src, (err, stats) => { if (err) return callback(err) let dir = null if (stats.isDirectory()) { const parts = dest.split(path.sep) parts.pop() dir = parts.join(path.sep) } else { dir = path.dirname(dest) } pathExists(dir, (err, dirExists) => { if (err) return callback(err) if (dirExists) return ncp(src, dest, options, callback) mkdir.mkdirs(dir, err => { if (err) return callback(err) ncp(src, dest, options, callback) }) }) }) } module.exports = copy
Version data entries
46 entries across 46 versions & 2 rubygems