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'));});
HUWWW
TA贡献1874条经验 获得超12个赞
tmp=cfg[basename];改成for(varaincfg[basename]){tmp[a]=cfg[basename][a];}类似这种形式。因为在.pipe(ejs(tmp))这里,已经事先取到了声明tmpvartmp={}时引用的Object,所以再对tmp直接赋值也改变不了ejs引用的tmp。
添加回答
举报
0/150
提交
取消