1.1.0 • Published 9 years ago

gulp-ejs-pipe v1.1.0

Weekly downloads
1
License
-
Repository
github
Last release
9 years ago

gulp-ejs-pipe

ejs plugin for gulp

gulp-ejs有何不同?

gulp-ejs-pipegulp-ejs fork 出来,除了保留了后者的主要API,还增加了从 file stream 流对象读取参数的能力。这样做,是为了可能出现的这样一种需求:

参数需要动态地生成,或者需要之前的在管道(pipe)中被处理。

Usage

安装 gulp-ejs-pipe:

npm install gulp-ejs-pipe

gulpfile.js 这样写,和 gulp-ejs 一样:

var ejs = require("gulp-ejs");

gulp.src("./templates/*.ejs")
	.pipe(ejs({
		msg: "Hello Gulp!"
	}))
	.pipe(gulp.dest("./dist"));

或者这样(需要配合 gulp-gdo):

将需要传送给ejs的数据赋给file的ejsrender属性:

var gulp = require('gulp');
var gutil = require('gulp-util');
var ejs = require('gulp-ejs');
var gdo = require('gulp-gdo');
var cfg = require('./config.json');

gulp.task('compile',function() {

    gulp.src("./html/**/[^_]*.ejs")
        .pipe(gdo(function(file,path){
            var name = path.dirname + "\\" +path.basename;

            // 判断相应的key是否存在
            if(cfg.hasOwnProperty(name)){
				file.ejsrender = cfg[name];
            }
            
            console.log(file.ejsrender);

        }))
        .pipe(ejs())
        .on('error',gutil.log)
        .pipe(gulp.dest('./dest'));
});

其中config.json可能是这样的:

{
	"static/html/template_1" : {
		"data_1":"Hello",
		"data_2":"World"
	},
	"static/html/template_2" : {
		"data_3":"Foo",
		"data_4":"Bar"
	}
}
<!--static/html/template_1.ejs-->
<div><%= data_1 %>,<%= data_2 %></div>


<!--static/html/template_2.ejs-->
<div><%= data_3 %>,<%= data_4 %></div>
	

License

MIT License