Chr*_*ery 7 stream node.js gulp
我想启动一个gulp.src流,将其传递给一个创建一堆新流的函数,然后将其结果传递给gulp.dest.下面是我到目前为止所做的,但它显然不起作用,因为我正在将流回流到gulp.dest哪个爆炸,因为它期待一个文件,而不是一个流.所以我的问题是:如何正确地将n流的数量返回到gulp的原始流,以便它们可以适当地继续沿着管道向下移动?
//gulpfile.js
var gulp = require('gulp'),
bundle = require('./lib/bundle.js');
gulp.task('bundle', function() {
return gulp.src('./bundle.config.js')
.pipe(bundle())
.pipe(gulp.dest('./public'));
});
Run Code Online (Sandbox Code Playgroud)
-
//bundle.config.js
module.exports = {
bundle: {
main: {
js: [
'./content/js/foo.js',
'./content/js/baz.js'
],
css: [
'./content/**/*.css'
],
resources: './content/**/*.{png,svg}'
},
other: {
js: './content/js/other.js',
css: '',
resources: ''
}
}
};
Run Code Online (Sandbox Code Playgroud)
-
//bundle.js
var gulp = require('gulp'),
through = require('through2'),
concat = require('gulp-concat');
module.exports = function () {
return through.obj(function (file, enc, cb) {
var config;
try {
config = require(file.path); // get config file
} catch (e) {
this.emit('error', e);
return cb();
}
var streams = [];
for (var key in config.bundle) {
var bundle = config.bundle[key];
streams.push(
gulp.src(bundle.js, {base: '.'})
.pipe(concat(key + '.js'))
);
streams.push(
gulp.src(bundle.css, {base: '.'})
.pipe(concat(key + '.css'))
);
streams.push(
gulp.src(bundle.resources, {base: '.'})
//.pipe(something())
);
}
for (var i = 0; i < streams.length; i++) {
// This causes an error in `gulp.dest` because we're returning the stream, not the file.
// Instead, how do I resolve each of the individual streams and push the results back to the main stream??
this.push(streams[i]);
}
cb();
});
};
Run Code Online (Sandbox Code Playgroud)
你可以看到这个代码,你可以在这个repo上分叉和玩:https://github.com/chmontgomery/gulp-streams-to-stream
Kon*_*kus 11
您可以使用merge-stream连接流
var gulp = require('gulp');
var merge = require('merge-stream');
gulp.task('bundle', function () {
var paths = [
{ src: 'src/admin/**', dest: './build/admin' },
{ src: 'src/public/**', dest: './build' }
];
var tasks = paths.map(function (path) {
return gulp.src(path.src).pipe(gulp.dest(path.dest));
}
return merge(tasks);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |