前言
記得在1年之前搭建了一個個人主頁的部落格,但是當時功力尚淺,每次寫部落格,都是自己手動寫html,這樣會變得非常的繁瑣,現在很多人用主流的wordpress,hexo之類的快速搭建一個平臺,那些工具確實方便,但是對於主題以及一些額外的排版,就顯得非常的麻煩,本文致力於教你如何搭建一個個性化,並且自動化構建的部落格。
開始
完成後的部落格展示: yifenghua.win/
github地址: github.com/hua1995116/… (喜歡的?一個哈)
本平臺也是基於.md檔案構建成html的自動化流程,因為現在主流的編寫方式就是用.md檔案來抒寫,所有問題就歸結為,如何讓.md檔案轉化成.html檔案。那問題就變得非常的簡單了,現在市面上有很多md轉成html的工具,markdown,marked,node-markdown等等。今天我就用marked來構建我們的自動化部落格。
Go on
Marked使用方法非常的簡單。
var marked = require(`marked`);
console.log(marked(`I am using __markdown__.`));
// Outputs: <p>I am using <strong>markdown</strong>.</p>複製程式碼
假設我們的git.md是這樣的:
st = status
co = checkout
cob = checkout -b
br = branch
bra = branch -a
ci = commit
cim = commit -m
cia = commit --amend
re = reset
rb = rebase
rbi = rebase -i
rbim = rebase -i origin/master
rbid = rebase -i origin/devlop
rbc =erebase --continue
rba = rebase --abort
fe = fetch
psom = push origin master
puom = pull origin master複製程式碼
如果是想要輸出檔案的形式:
const fs = require(`fs`)
const marked = require(`marked`)
fs.readFile(`./notes/git.md`, `utf8`, (err,markContent)=>{
if(err){
throw err
}else{
fs.writeFile(`./git.html`,marked(markContent.toString()), err=>{
if(err){
throw err
}else{
console.log("success")
}
})
}
})複製程式碼
既然我們已經知道了md檔案如何轉成html,但是我們發現,這樣生成的檔案是沒有樣式的,所以我們需要去找一個樣式的庫,我現在用的是github-markdown.css 還有一個程式碼高亮的庫,prism 。引用prism.css和prism.js ,就可以發現我們開啟的html,就有了樣式,還有程式碼高亮的操作。
因為我們到,github-markdown-css,prism分別取下載對應的css和js,然後引入。
經過上述操作後,我們的檔案應該是這樣的:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="../css/github-markdown.css">
<link rel="stylesheet" type="text/css" href="../css/prism.css">
</head>
<body>
<pre><code>
st = status
co = checkout
cob = checkout -b
br = branch
bra = branch -a
ci = commit
cim = commit -m
cia = commit --amend
re = reset
rb = rebase
rbi = rebase -i
rbim = rebase -i origin/master
rbid = rebase -i origin/devlop
rbc =erebase --continue
rba = rebase --abort
fe = fetch
psom = push origin master
puom = pull origin master
</code></pre>
<script type="text/javascript" src="../js/prism.js"></script>
</body>
</html>複製程式碼
但是這一步是我們手動寫上的。
Next
因為我的需要一個模板機制,來幫我們手動生成一個檔案。
Tempale.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title></title>
<link rel="stylesheet" type="text/css" href="../css/github-markdown.css">
<link rel="stylesheet" type="text/css" href="../css/prism.css">
<!-- <link type="text/css" rel="stylesheet" href="./css/shCoreEclipse.css"/> -->
</head>
<body scroll="no">
<div class="markdown-body">
@markdown
</div>
<script type="text/javascript" src="../js/prism.js"></script>
</body>
</html>複製程式碼
再來重新配置我們的執行檔案。
const fs = require(`fs`)
const marked = require(`marked`)
fs.readFile(`./template1.html`, `utf8`, (err, template)=>{
if(err){
throw err
}else{
fs.readFile(`./notes/git.md`, `utf8`, (err,markContent)=>{
if(err){
throw err
}else{
template = template.replace(`@markdown`, marked(markContent.toString()))
fs.writeFile(`./git.html`, template, err=>{
if(err){
throw err
}else{
console.log("success")
}
})
}
})
}
})複製程式碼
可以看到一個生成後的檔案,已經完整了。
擴充套件
分頁:再此基礎上我又對其進行了擴充套件,增加了一個分頁的功能。
檔案目錄:.md 檔案的目錄(待開發)
歸檔:在json目錄下生成tagdata.json
使用
git clone https://github.com/hua1995116/myblog複製程式碼
將需要寫的.md檔案放到notes目錄下,
// 安裝依賴
npm install
// 編譯
node index.js
// 本地檢視
node http.js複製程式碼
其他具體的樣式你可以自行配置,和普通寫html,css無差異。
編譯後的html程式碼在html目錄下,將其放到你的站點下,或者github-pages上即可。
每次寫完新的部落格,只要執行下index.js即可釋出。