Ho voluto creare un file zip e caricarlo senza scrivere un file temporaneo su disco in questo modo:possibile utilizzare gulp per creare un file zip e caricare senza utilizzare il file temporaneo?
gulp.task('zip-upload', function() {
return gulp.src('**/*', { cwd: 'out/', cwdbase: true })
.pipe(zip('file.zip'))
.pipe(request.put('https://myurl.com'));
});
Ma getta un errore:
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)
ho finito per risolverlo utilizzando due compiti, ma questo non è l'ideale:
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'));
});
È possibile utilizzare qualcosa come il primo approccio con gulp?
Dipendenze:
npm install gulp-zip request
Grazie.
Im semplicemente curiosi di scoprire questa soluzione: è davvero questo di evitare l'IO su disco e fare tutto in memoria (Chunked o no) o è solo ri-streaming dei dati conferiti a disco? –
@JairoAndresVelascoRomero puoi controllare la fonte su https://github.com/jeromew/gulp-buffer/blob/master/index.js - raccoglie tutti i blocchi e crea un buffer con quel contenuto. Non vedo nulla che indichi l'accesso al file system. –