如何从外部引入参数传给gulp-ejs?
gulp-ejs官网上有如此使用示例:
javascript
var ejs = require("gulp-ejs"); gulp.src("./templates/*.ejs") .pipe(ejs({ msg: "Hello Gulp!" })) .pipe(gulp.dest("./dist"));
会得到如此效果:
html
<!-- input: --> <div><%= msg %></div> <!-- output: --> <div>Hello Gulp!</div>
出于某种需要,我把需要的ejs参数(data)放在了一个外部文件中:
json
// config.json { "content_includes":{ "title":"Hello" } }
html
<!-- content_includes.ejs --> <h1><%= title %></h1>
javascript
// gulpfile.js var gulp = require('gulp'); var gutil = require('gulp-util'); var ejs = require('gulp-ejs'); var rename = require('gulp-rename'); var path = require('path'); var cfg = require('./config.json'); var tmp = {} gulp.task('compile',function() { gulp.src("./html/**/[^_]*.ejs") .pipe(rename(function(path){ var basename = 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')); });
结果,提示参数未传入:
title is not defined
请问应该怎么做?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用gulp-data试试
改成
类似这种形式。
因为在
.pipe(ejs(tmp))
这里,已经事先取到了声明tmp
var tmp = {}
时引用的Object,所以再对tmp直接赋值也改变不了ejs引用的tmp。