如何實現將markdown檔案實時轉換為html文件
在簡書裡寫文章時,有個預覽模式,左邊用markdown語法寫,右邊能實時預覽到最終效果,今天看到一個實現類似功能的demo,所以準備寫下來留個筆記
利用檔案監視實現自動將markdown檔案轉換為html文件
實現思路:
- 利用
fs
模組的檔案監視功能fs.watch(filename,listener)
監視指定markdown
檔案. (可以理解為釋出訂閱模式,每當檔案發生變化,釋出訊息,訂閱者收到訊息) - 當檔案發生變化後,藉助
marked
包提供的markdown
tohtml
功能將改變後的md檔案轉換為html格式。 - 將得到的html以及讀入的css檔案替換到模板,得到最終要渲染的html.
- 最後利用
BrowserSync
模組實現瀏覽器自動重新整理,即每當改變markdown檔案,瀏覽器中會自動重新整理顯示
程式碼不多:
const fs = require('fs');
const path = require('path');
const marked = require('marked');
const browserSync = require('browser-sync');
//接收需要轉換的檔案路徑
const target = path.join(__dirname, process.argv[2] || 'README.md')
//最終生成的html檔案的位置
const filename = target.replace(path.extname(target), '.html')
//獲取html檔名
const indexpath = path.basename(filename);
//通過browser-sync建立一個檔案伺服器
browserSync({
notify: false,
server: path.dirname(target),//網站根目錄
index: indexpath//預設文件
})
//監視檔案變化,可以理解為當檔案發生變化(需要儲存才能觸發檔案變化),interval時間間隔後呼叫回撥函式
fs.watchFile(target, { interval: 200 }, (cur, prev) => {
// console.log(`current:${cur.size} previous:${prev.size}`);
//判斷檔案的最後修改時間是否改變,減少不必要的轉換
if (cur.mtime === prev.mtime) {
return false;
}
fs.readFile(target, 'utf8', (err, content) => {
if (err) {
throw err;
}
let html = marked(content);
// console.log(html);
fs.readFile(path.join(__dirname, 'github.css'), 'utf8', (err, css) => {
html = template.replace('{{{content}}}', html).replace('{{{styles}}}', css);
// console.log(html);
fs.writeFile(filename, html, (err) => {
if (err) {
throw err;
}
browserSync.reload(indexpath);
console.log('updated@' + new Date());
})
})
})
})
const template = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Markdown to Html</title>
<style>{{{styles}}}</style>
</head>
<body>
<div class='vs'>
{{{content}}}
</div>
</body>
</html>`;
執行後每當改變markdown檔案(ctrl+s),頁面會自動重新整理,和簡書的預覽效果基本差不多
原始碼:https://github.com/Hfimy/markdownTohtml
相關文章
- Java 將Markdown檔案轉換為Word和PDF文件Java
- C# 將PDF文件轉換為Markdown文件C#
- 蘋果手機如何將PDF檔案轉換為Word文件蘋果
- Java 實現 markdown轉HtmlJavaHTML
- XSLT實現XML文件轉換成HTML文件XMLHTML
- 使用 pandoc 將 Markdown 轉換為格式化文件
- 如何將.ipynb檔案轉換為.py檔案
- Linux下批量將md檔案轉換為html檔案LinuxHTML
- 如何將Powerpoint文件轉換為Word文件
- 使用UiBot實現批次html轉換成PDF檔案UIHTML
- 原生 JS 實現 HTML 轉 Markdown,以及其實現邏輯JSHTML
- 將Schema檔案轉換為Java檔案Java
- Json檔案轉換為Excel檔案!涉及讀檔案,時間戳轉化,寫文件JSONExcel時間戳
- 將PPT文件轉換為Word文件
- 如何實現檔案轉換與線上預覽功能
- python 將 CVS檔案轉為HTML檔案PythonHTML
- 如何將 PowerPoint 簡報轉換為 PDF 檔案?
- 在蘋果Mac上如何將實時照片轉換為靜態照片?蘋果Mac
- 把domino 的文件生成 doc 或者 html 檔案的實現HTML
- WebToLayers如何將網頁轉換為PSD文件?Web網頁
- PowerPoint如何將簡報轉換為WORD文件
- 如何將man與info文件轉換為文字方式
- vue 匯入.md檔案(markdown轉HTML)VueHTML
- Python實現批次將ppt轉換為pdfPython
- Python實現批量將ppt轉換為pdfPython
- 用Python將word檔案轉換成htmlPythonHTML
- 將網頁轉換為Markdown的免費線上轉換工具網頁
- 教程:如何通過DLA實現資料檔案格式轉換
- 如何將時間字串轉換為時間物件字串物件
- WPS演示將演示文件轉換成Flash檔案
- C#解析Markdown文件,實現替換圖片連結操作C#
- aspose word轉換pdf檔案後將pdf檔案轉換為圖片png
- jquery實現將字串轉換為json格式物件jQuery字串JSON物件
- 【實戰】通過 JS 將 HTML 匯出為 PDF 文件JSHTML
- 如何將html程式碼儲存為Pdf檔案HTML
- JavaScript實現線上Markdown編輯器、轉換HTML工具-toolfk程式設計師工具網JavaScriptHTML程式設計師
- 如何將網頁快速轉換為WPS與WORD文件網頁
- PDF檔案如何轉成markdown格式