将博客从jekyll迁移到了hexo
关于hexo和jekyll
hexo和jekyll一样都是个静态网站生成工具,hexo是一个台湾小伙使用nodejs开发的,jekyll则是用ruby开发,github内置了jekyll,可以直接将jekyll相关的文件提交到github,github会自动给你生成静态页面。
hexo由于采用nodejs开发的,因此需要在本地生成静态页面后在提交到github,不过hexo内置了hexo deploy
命令,提交博客也是挺方便的。
之前使用jekyll搭建的个人博客,由于jekyll对分页和文章摘要支持的不是很好,了解一下hexo这个新东西,感觉其页面生成速度还是蛮不错的,对分页和文章摘要也支持的挺好,主要是小清新的light主题吸引了我,于是乎,马上有种把博客迁移到hexo的念头。
安装hexo
首先需要安装nodejs,安装成功后,在命令行下通过npm install hexo -g
安装hexo。
根据hexo官方文档,创建一个网站,生成页面,并通过hexo server
本地查看网站,都挺简单的,不在啰嗦了。
迁移jekyll到hexo
这个对于程序员就比较简单了,对比一下两种markdown文件的差异,写个程序处理一下就OK了,我用c#处理的,贴出代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Jekyll2Hexo { class Program { // 将jekyll中包含md文件的文件夹拖放到生成的exe上,处理后的文档保存在文件夹的上级目录 // 本程序是针对jekyll-bootstrap博客中的文档做的处理 static void Main(string[] args) { if (args.Length == 0) { return; } string folder = args[0]; if (Directory.Exists(folder)) { foreach (var file in Directory.GetFiles(folder, "*.md")) { FileInfo fi = new FileInfo(file); string date = fi.Name.Substring(0, 10); StringBuilder sb = new StringBuilder(); FileStream fs = new FileStream(file, FileMode.Open); using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { int lineCount = 0; while (!sr.EndOfStream) { var line = sr.ReadLine(); if (line.StartsWith("tagline:")) { continue; } lineCount++; if (lineCount == 1 || lineCount == 2 || lineCount == 4 || lineCount == 8) { continue; } if (lineCount == 3) { sb.AppendLine(line.Replace("\"", "")); sb.AppendLine("date: " + date); continue; } if (lineCount == 5) { sb.AppendLine("categories:" + line.Split(':')[1]); continue; } if (lineCount == 16) { sb.AppendLine("<!-- more -->"); } sb.AppendLine(line); } } // 保存处理后的md文件 File.WriteAllText(Path.Combine(fi.Directory.Parent.FullName, fi.Name.Substring(11)), sb.ToString(), Encoding.UTF8); } } } } } |
遇到的一些问题
文章摘要设置
hexo和jekyll一样,都支持使用markdown编写文章,hexo的文章保存在source/_post目录下。
需要注意的是,在编写markdown文档是,在文档中插入<!--more-->
就可以将文章切分开了,more以上的部分会已摘要的形式显示,当查看全文是more一下的部分也会显示出来。
图片路径问题
这个也很简单,直接将图片文件夹放到source目录下即可。
同理将favicon.ico和CNAME(github支持在CNAME文件中加入自定义域名,通过自定义的域名访问自己的网站)也放到source目录。
据说看到好文章不推荐的人,服务器容易宕机!
本文版权归翟士丹(Stan Zhai)和博客园共有,原创文章,未经允许不得转载,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构