From d2290d509fd71b57cb336bbd48294dd11e785fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andre=CC=81=20Cruz?= Date: Mon, 13 May 2013 15:07:41 +0100 Subject: [PATCH] Copy now uses ncp to copy if there is no ignore filter, which is must faster. --- lib/util/copy.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/util/copy.js b/lib/util/copy.js index f1eb5a5b..4294c484 100644 --- a/lib/util/copy.js +++ b/lib/util/copy.js @@ -1,21 +1,29 @@ var fstream = require('fstream'); var fstreamIgnore = require('fstream-ignore'); var fs = require('fs'); +var ncp = require('ncp'); var Q = require('q'); function copy(reader, writer) { - var deferred = Q.defer(); + var deferred; var ignore; - // Reader - if (reader.type === 'Directory' && reader.ignore) { - ignore = reader.ignore; - reader = fstreamIgnore(reader); - reader.addIgnoreRules(ignore); - } else { - reader = fstream.Reader(reader); + // If there's no ignore, use ncp because it is much faster + // than fstream + if (reader.type !== 'Directory' || !reader.ignore) { + return Q.nfcall(ncp, reader.path, writer.path) + .then(function () { + if (writer.mode) { + return Q.nfcall(fs.chmod, writer.path, writer.mode); + } + }); } + deferred = Q.defer(); + ignore = reader.ignore; + reader = fstreamIgnore(reader); + reader.addIgnoreRules(ignore); + reader .on('error', deferred.reject) // Pipe to writer