2017-04-01 70 views

回答

6

經過多次研究,我沒有找到任何好的解決方案,所以我決定與你分享我的解決方案。

這個問題在2解決步驟

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:從您的黑膠文件的創建流

我發現,這些步驟可重複和可使代碼更少可讀,所以我決定將這些步驟封裝在一個npm包中,爲你做到這一點。

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

1

由於一飲而盡使用乙烯基文件作爲輸入,實際上uses它的一些特性(如.base)的,這是不可避免的產生乙烯的文件儘量使用一飲而盡的。所以我建議這個訪問實現自己的目標:

'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/")) 
}); 

創建一個空文件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/")) 
});