through.obj(function (file, encoding, callback) { ctx.ready(function () { ssh.sftp(function (err, sftp) { if (err) return callback(new gutil.PluginError(packageName, err)) options.autoClose = true var write = sftp.createWriteStream(filePath, options) write .on('error', function (error) { err = error }) .on('finish', function () { sftp.end() if (err) callback(err) else callback(null, file) }) if (file.isStream()) file.pipe(write) else if (file.isBuffer()) write.end(file.contents); else { err = new gutil.PluginError(packageName, 'file error!') write.end() } }) }) })
ctx.ready(function () { ssh.sftp(function (err, sftp) { if (err) return outStream.emit('error', new gutil.PluginError(packageName, err)) var read = sftp.createReadStream(filePath, options) options.base = options.base || '' read .on('data', function (chunk) { chunkSize += chunk.length chunks.push(chunk) }) .on('error', function (err) { outStream.emit('error', err) }) .on('end', function () { outStream.push(new gutil.File({ cwd: __dirname, base: __dirname, path: path.join(__dirname, options.filePath || filePath), contents: Buffer.concat(chunks, chunkSize) })) outStream.end() this.close() }) .on('close', function () { sftp.end() }) }) })