2016-10-18 48 views
1

目前我知道如何使用gulp將json數據注入到jade中,但是json數據中的markdown沒有以正確的方式格式化。我聽說過marked,但不知道如何在我的gulp文件或jade文件中使用它。將json轉換爲markdown並使用gulp注入到jade

我直接用

.pipe(data(JSON.parse(fs.readFileSync(file))) 
.pipe(pug()) 
.pipe(gulp.dest(destdir)) 

管道數據我已經嘗試

.pipe(data(marked(JSON.parse(fs.readFileSync(file))))) 

.pipe(marked(data(JSON.parse(fs.readFileSync(file))))) 

都說類型錯誤:src.replace不是一個函數

我不確定我可以在這裏或在我的玉石代碼中嵌入marked。有什麼建議麼?

EDITED 所以我做了一些json對象的預處理,我從JSON.parse得到。在寫入我的玉石數據之前,我首先寫了一個函數給marked每個json對象中的字符串。喜歡的東西:

var marked = require("marked") 
function preprocess(){ 
    var data = JSON.parse(fs.readFileSync(file)); 
    iterate through data and do marked(string) 
    return data 
} 

現在我能夠得到呈現的字符串轉換成玉,玉是無法理解的降價符號,例如<p> </p>在我的網頁是從字面上顯示爲<p> </p>。任何解決方法?

回答

0

因爲我之前沒有直接使用過像以前那樣的工作流程,所以我不能直接用一個建議來解決您的問題,但我會嘗試分享幾個可能解決您的問題的應用程序組合。

讓我們從Markdown開始。您可以使用標記連同gulp-markdown-to-json。常見的工作流程是這樣的:

const gulp = require('gulp'); 
const markdownToJSON = require('gulp-markdown-to-json'); 
const marked = require('marked'); 

marked.setOptions({ 
    pedantic: true, 
    smartypants: true 
}); 

gulp.task('markdown',() => { 
    gulp.src('./content/**/*.md') 
    .pipe(markdownToJSON(marked)) 
    .pipe(gulp.dest('.')) 
}); 

這樣,就會降價,敷在JSON格式也將降價的身體HTML。如果您查看已標記的選項,可以使用一些方法來清理縮減標記。它們可能很有用,因爲你說過你的格式有問題。

現在我們有一個JSON文件,我們需要管道到Jade。您也可以使用數據(本地)通過Jade編譯任務進行管道。

gulp.task('compilePug', function() { 
    return gulp.src('templates/**/*.pug') 
     .pipe(pug({ 
      pretty: true, 
      data: { 
       'posts' : JSON.parse(fs.readFileSync('content/json/content.json')) 
      } 
     })) 
     .on('error', onError) 
     .pipe(gulp.dest('./')); 
}); 

一旦編譯,你將有下職位玉可變權訪問您的JSON。

最後,你提到了段落標籤出現在你的Jade模板中。這聽起來像你試圖將純HTML格式化爲Jade。這很好,事實上,如果你使用我在開始時分享的gulp工作流程,你會將HTML傳遞給Jade。你只需要告訴Jade HTML即將到來:

!{posts.HTMLfromJSON} // Jade will expect HTML 
#{posts.HTMLfromJson} // Jade won't expect HTML it will treat it like plain text 

希望這些都能幫助你解決這個問題。