Ich wollte eine Zip-Datei erstellen und laden Sie es ohne eine temporäre Datei auf der Festplatte wie das Schreiben so:möglich, Schluck zu verwenden, um eine Zip-Datei zu erstellen und ohne temporäre Datei hochladen?
gulp.task('zip-upload', function() {
return gulp.src('**/*', { cwd: 'out/', cwdbase: true })
.pipe(zip('file.zip'))
.pipe(request.put('https://myurl.com'));
});
Aber es wirft einen Fehler:
http.js:853
throw new TypeError('first argument must be a string or Buffer');
TypeError: first argument must be a string or Buffer
at ClientRequest.OutgoingMessage.write (http.js:853:11)
at Request.write (.../node_modules/request/request.js:1315:25)
ich es zu lösen endete durch zwei mit Aufgaben, aber das ist nicht ideal:
gulp.task('zip', function() {
return gulp.src('**/*', { cwd: 'out/', cwdbase: true })
.pipe(zip('file.zip'))
.pipe(gulp.dest('./'));
});
gulp.task('upload', [ 'zip' ], function() {
fs.createReadStream('file.zip').pipe(request.put('https://myurl.com'));
});
Ist es möglich, etwas wie die erste Annäherung mit Schluck zu verwenden?
Abhängigkeiten:
npm install gulp-zip request
Dank.
Ich bin nur neugierig auf diese Lösung: Ist das wirklich vermeidet die IO auf Festplatte und alles im Speicher (Chunked oder nicht) oder ist nur das Streaming der Daten auf die Festplatte? –
@JairoAndresVelascoRomero Sie können die Quelle unter https://github.com/jeromew/gulp-buffer/blob/master/index.js überprüfen - es sammelt alle Chunks und erstellt einen Puffer mit diesem Inhalt. Ich sehe nichts, was auf Dateisystemzugriff hinweist. –