如何从外部引入参数传给gulp-ejs?

gulp-ejs官网上有如此使用示例:
javascriptvarejs=require("gulp-ejs");
gulp.src("./templates/*.ejs")
.pipe(ejs({
msg:"HelloGulp!"
}))
.pipe(gulp.dest("./dist"));
会得到如此效果:
html
<%=msg%>
HelloGulp!
出于某种需要,我把需要的ejs参数(data)放在了一个外部文件中:
json//config.json
{
"content_includes":{
"title":"Hello"
}
}
html

<%=title%>

javascript//gulpfile.js
vargulp=require('gulp');
vargutil=require('gulp-util');
varejs=require('gulp-ejs');
varrename=require('gulp-rename');
varpath=require('path');
varcfg=require('./config.json');
vartmp={}
gulp.task('compile',function(){
gulp.src("./html/**/[^_]*.ejs")
.pipe(rename(function(path){
varbasename=path.basename;
//判断相应的key是否存在
if(cfg.hasOwnProperty(basename)){
//若存在则缓存这个key的value,即需要传给ejs的参数
tmp=cfg[basename];
}else{
tmp={};
}
}))
.pipe(ejs(tmp))
.on('error',gutil.log)
.pipe(rename(function(path){
path.extname=".html";
}))
.pipe(gulp.dest('./dest'));
});
结果,提示参数未传入:
titleisnotdefined
请问应该怎么做?
波斯汪
浏览 363回答 2
2回答

繁星coding

用gulp-data试试vardata=require('gulp-data');vargetJsonData=function(file){returnrequire('./examples/'+path.basename(file.path)+'.json');};gulp.task('taskname',function(){returngulp.src().pipe(data(getJsonData)).pipe(gulp.dest('./dest'));});

HUWWW

tmp=cfg[basename];改成for(varaincfg[basename]){tmp[a]=cfg[basename][a];}类似这种形式。因为在.pipe(ejs(tmp))这里,已经事先取到了声明tmpvartmp={}时引用的Object,所以再对tmp直接赋值也改变不了ejs引用的tmp。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript