Je suppose que cela vient d'une compréhension limitée des flux, mais j'ai regardé partout et je ne peux pas le faire fonctionner. En bref, je veux prendre un flux Gulp et passer le contenu concaténé du flux à une réponse express directement sans écrit dans le système de fichiers.Tuyau concaténé Gulp stream file.contents au serveur (connect, express ou http)
Voilà comment j'ai eu l'idée (qui fonctionne très bien):
app.get('*', function(req, res){
var stream = fs.createReadStream(__dirname + '/app/index.html');
stream.pipe(res);
});
Mais je veux appliquer le même concept en utilisant un flux de Gulp:
app.get('/app/js/concatenated-js-files.js', function(req, res){
gulp.src('app/js/**/*.js')
.pipe(concat())
.pipe(res);
});
app.listen(5555, function() {
console.log('Listening on port 5555');
});
Ce qui ne fonctionne pas et les rendements les éléments suivants lors de la demande /app/js/concatenated-js-files.js
du navigateur:
[gulp] Error in plugin 'gulp-concat': Missing fileName option for gulp-concat
at module.exports (/Users/lgomez/Projects/index-packager/node_modules/gulp-concat/index.js:10:24)
at Object.handle (/Users/lgomez/Projects/index-packager/index.js:83:15)
at next_layer (/Users/lgomez/Projects/index-packager/node_modules/express/lib/router/route.js:103:13)
at Route.dispatch (/Users/lgomez/Projects/index-packager/node_modules/express/lib/router/route.js:107:5)
at /Users/lgomez/Projects/index-packager/node_modules/express/lib/router/index.js:213:24
at Function.proto.process_params (/Users/lgomez/Projects/index-packager/node_modules/express/lib/router/index.js:284:12)
at next (/Users/lgomez/Projects/index-packager/node_modules/express/lib/router/index.js:207:19)
at Layer.expressInit [as handle] (/Users/lgomez/Projects/index-packager/node_modules/express/lib/middleware/init.js:23:5)
at trim_prefix (/Users/lgomez/Projects/index-packager/node_modules/express/lib/router/index.js:255:15)
at /Users/lgomez/Projects/index-packager/node_modules/express/lib/router/index.js:216:9
Cette erreur est ExPEC ted. gulp-concat a été écrit pour la sortie dans le fichier.
Je voudrais éviter d'écrire un plugin de gulp qui serait très similaire à gulp-concat. Je peux fourchonner et suggérer mais, pour l'instant, y at-il un autre moyen d'y parvenir?
Merci!
Voici le code complet si vous souhaitez l'essayer.
var express = require('express');
var gulp = require('gulp');
var concat = require('gulp-concat');
var app = express();
app.get('/app/js/concatenated-js-files.js', function(req, res){
gulp.src('app/js/**/*.js')
.pipe(concat())
.pipe(res);
});
app.listen(5555, function() {
console.log('Listening on port 5555');
});
// http://localhost:5555/app/js/concatenated-js-files.js
** Remarque: ** J'ai essayé [event-stream] (https://github.com/dominictarr/event-stream), [bufferstreams] (https://github.com/nfroidure/BufferStreams) et [kat] (https://github.com/fent/node-kat) mais pas de chance. – luisgo