为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

波斯汪 2019-04-13 08:36:18
gulp-ejs官网上有如此使用示例:javascriptvarejs=require("gulp-ejs");gulp.src("./templates/*.ejs").pipe(ejs({msg:"HelloGulp!"})).pipe(gulp.dest("./dist"));会得到如此效果:htmlHelloGulp!出于某种需要,我把需要的ejs参数(data)放在了一个外部文件中:json//config.json{"content_includes":{"title":"Hello"}}htmljavascript//gulpfile.jsvargulp=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请问应该怎么做?
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

用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'));
});
                            
查看完整回答
反对 回复 2019-04-13
?
HUWWW

TA贡献1874条经验 获得超12个赞

tmp=cfg[basename];
改成
for(varaincfg[basename]){
tmp[a]=cfg[basename][a];
}
类似这种形式。
因为在.pipe(ejs(tmp))这里,
已经事先取到了声明tmpvartmp={}时引用的Object,
所以再对tmp直接赋值也改变不了ejs引用的tmp。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信