Copy now uses ncp to copy if there is no ignore filter, which is must faster.

This commit is contained in:
André Cruz
2013-05-13 15:07:41 +01:00
parent e09a3b8cbf
commit d2290d509f

View File

@@ -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