如何使用对象列表作为 gulp 源流
How to use objects list as gulp source stream
我知道 gulp 需要乙烯基源流才能正常工作,但是有没有一种简单的方法可以使用已经存在的乙烯基文件或 json 对象而不是众所周知的 gulp.src 只需要 globs?
经过多次研究,我没有找到解决该问题的好方法,所以我决定与您分享我的解决方案。
该问题分两步解决
1:您需要将要在 gulp 中通过管道传输的内容转换为乙烯基文件。
可以这样做
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 包中,为您完成这些步骤。
由于gulp使用乙烯基文件作为输入并且实际上uses它的一些属性(例如.base
),因此不可避免地要创建乙烯基文件以利用gulp.所以我推荐这个访问来实现你的目标:
'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/"))
});
我知道 gulp 需要乙烯基源流才能正常工作,但是有没有一种简单的方法可以使用已经存在的乙烯基文件或 json 对象而不是众所周知的 gulp.src 只需要 globs?
经过多次研究,我没有找到解决该问题的好方法,所以我决定与您分享我的解决方案。
该问题分两步解决
1:您需要将要在 gulp 中通过管道传输的内容转换为乙烯基文件。 可以这样做
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 包中,为您完成这些步骤。
由于gulp使用乙烯基文件作为输入并且实际上uses它的一些属性(例如.base
),因此不可避免地要创建乙烯基文件以利用gulp.所以我推荐这个访问来实现你的目标:
'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/"))
});