2017-08-22 76 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

相關問題