如何使用对象列表作为吞噬源码stream

我知道,吞咽需要一个乙烯源stream才能正常工作,但有没有简单的方法来使用已经存在的乙烯基文件或JSON对象,而不是众所周知的gulp.src,只能采取globs?

经过多次研究,我没有find任何解决scheme,所以我决定与你分享我的解决scheme。

这个问题分两步解决

1:你需要把你想要的任何东西转换成一个黑胶唱片。 这可以这样做

const Vinyl = require('vinyl'); var vinyl = new Vinyl(); vinyl.cwd = '/'; vinyl.base = '/'; vinyl.path = '/yourfictivefilepath'; vinyl.contents = new Buffer(JSON.stringify(yourobject)); 

有关该步骤的更多信息: https : //github.com/gulpjs/vinyl

2:从乙烯基文件中创build一个stream

我发现这些步骤可能是重复的,并且可能使代码更不可读,所以我决定将这些步骤封装在一个npm包中,为您做到这一点。

https://www.npmjs.com/package/gulp-to-stream

由于gulp使用乙烯基文件作为input并实际使用其一些属性(如.base ),所以创build乙烯基文件以利用.base是不可避免的。 所以我build议这个访问来实现你的目标:

 'use strict'; const gulp = require('gulp'); const header = require('gulp-header');//https://www.npmjs.com/package/gulp-header gulp.task('default', function () { gulp.src("a.json")//empty file .pipe(header(JSON.stringify({a:1,b:2})))//inject your own content .pipe(gulp.dest("dist/")) }); 

创build一个空文件a.json并将其用作源文件。 然后用gulp-header注入你自己的内容,并用它做任何你想做的事情。

如果你想避免额外的文件(a.json),试试这个:

 'use strict'; const gulp = require('gulp'); const transform = require('gulp-transform'); const rename = require("gulp-rename"); gulp.task('default', function () { return gulp.src("./gulpfile.js") .pipe(transform(() => JSON.stringify({a:1,b:2}))) .pipe(rename("a.json")) .pipe(gulp.dest("dist/")) }); 
Interesting Posts