2017-08-22 75 views
0

我是新来的吞噬框架。我一直在研究一个小型的gdp脚本,它会将Markdown文件传递给JSON字符串,然后使用Jade模板呈现最终的HTML。我使用gulp-wrap将数据传递到我的玉模板“文件名”选项需要使用“包含”与“相对”路径

// md to jade blog 
gulp.task('blog',() => { 
    gulp.src(path.join(dirs.source, dirs.blogs, entries.md)) 
    .pipe(md(marked)) 
    .pipe(plumber()) 
    .pipe(wrap(function(data) { 
    // read correct jade template from disk 
    let template = path.join(dirs.source, dirs.layouts, data.contents.template) 
    // template location is at 'src/_layouts/base-blog.jade' 
    return fs.readFileSync(template).toString(); 
    }, { 

    }, { 
     engine: 'jade' 
    })) 
    .pipe(rename({extname:'.html'})) 
    .pipe(gulp.dest(dest)); 
}); 
} 

我不断收到以下错误,当我运行它:

Message: 
Jade:11 
9| //- var pageTitle = config.pageTitle || '' 
10| 
> 11| include ../_modules/project-list/project-list 
12| include ../_modules/about/about 
13| 
14| doctype html 

the "filename" option is required to use "include" with "relative" paths 
Details: 
path: undefined 

任何人都不会有如何解决这个问题的想法?

回答

0

的错误信息是很清楚这里:

在 “文件名” 选项,需要使用 “包括” 与 “相对” 路径

所以:

  • 要么通过使用-p

    找到一种方法将“文件名”选项传递给Jade/Pug命令条
    > pug --help 
    [...] 
        -p, --path <path>  filename used to resolve includes 
    
  • 或让你的文件路径绝对

+0

感谢@Filaton, .pipe(套(功能(数据){// 从磁盘中读取正确的玉模板 让模板= path.join (dirs.source,dirs.layouts,data.contents.template) return fs.readFileSync(template).toString(); },{ 漂亮:真, 文件名:path.join(dirs.source,dirs.layouts, '基blog.jade'), BASEDIR:path.resolve(), 配置:配置 }, 我通过设计布局名称来解决问题。但它是非常多的尝试和错误,找出我应该把代码放在gulp-wrap –

+0

是的,我同意关于Jade/Pug/Gulp的文档可能会更好,但很高兴你解决了它。欢迎来到Stack Overflow! :) – filaton

相关问题