《周易》乃周文王姬昌所作,是中国传统思想文化中自然哲学与人文实践的理论根源,是古代汉民族思想、智慧的结晶,被誉为“大道之源”。内容极其丰富,对中国几千年来的政治、经济、文化等各个领域都产生了极其深刻的影响。
像这种千古奇书,每个中国人都应该读一读,一是因为这是老祖宗的智慧,我们不能丢弃;二是因为《周易》蕴含宇宙人文的运行规律,浅读可修身养性,熟读可明自我,深究可知未来,参透就可知天命了。
东汉著名史学家、文学家班固在《汉书•艺文志》中提出《周易》的成书是:人更三圣,世历三古。
其实易经的完本在网上随便就可以找到,但是都不适合在摸鱼的时候读 (!🤡),打开花花绿绿或者神神叨叨的小网站,你的 leader 肯定一眼就看出你在摸鱼。
既然没有这种网站,那干脆自己做一个。
pnpm add -D vitepress
pnpm vitepress init
填写完 cli 里的几个问题,项目就可以直接运行了。可以看到网站直接解析了几个 示例的 md 文件,非常的神奇。
那么哪里才可以找到《周易》的 markdown 版本呢,找了一圈也没有找到,最后找到了一个 txt 的,我觉得写个脚本转换一下。
首先,我拿 vscode 的正则给每个标题加上井号,使其成为一级标题
此时,所有的标题都被改成了 md 格式的一级标题,然后直接将后缀名从 .txt 改为 .md 即可。
看过 vitepress 的文档并经过实操后发现,它的目录是一个一个的小 markdown 文件组成的,而单个 markdown 内的标题等在右侧显示
那么此时就需要把《周易》完本,按照六十四卦分为六十四个 md 文件。
我写了一个 node 脚本:
const fs = require('fs');
// 读取 zhouyi.md 文件
fs.readFile('zhouyi.md', 'utf8', (err, data) => {
if (err) {
console.error('读取文件出错:', err);
return;
}
// 按一级标题进行分割
const sections = data.split('\n# ');
// 循环处理每个一级标题的内容
sections.forEach((section, index) => {
// 提取标题和内容
const lines = section.split('\n');
const title = lines[0];
const content = lines.slice(1).join('\n');
// 写入到单独的文件中
const fileName = `zhouyi_${index + 1}.md`;
fs.writeFile(fileName, `# ${title}\n\n${content}`, err => {
if (err) {
console.error(`写入文件 ${fileName} 出错:`, err);
} else {
console.log(`已创建文件: ${fileName}`);
}
});
});
});
取名为 md-slicer.js ,在控制台输入
node md-slicer.js
即可生成
然后写一个在 .vitepress/config.mts
写 sidebar
的生成函数:
let itemsLength = 64
function getSidebar() {
let items: {}[] = [{
text: '《周易》是什么?',
link: '/what.md'
}]
for (let i = 1; i <= itemsLength; i++) {
items.push({ text: `第${numberToChinese(i)}卦`, link: `/zhouyi_${i}.md` })
}
return items
}
numberToChinese 函数用来将阿拉伯数字转为中文数字,因为周易只有六十四卦,所以不用考虑很多,够用即可
// numberToChinese
function numberToChinese(number) {
const chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const chineseUnits = ['', '十', '百', '千', '万', '亿'];
// 将数字转换为字符串,以便于处理每一位
const numStr = String(number);
let result = '';
let zeroFlag = false; // 用于标记是否需要加上“零”
for (let i = 0; i < numStr.length; i++) {
const digit = parseInt(numStr[i]); // 当前位的数字
const unit = chineseUnits[numStr.length - i - 1]; // 当前位的单位
if (digit !== 0) {
if (zeroFlag) {
result += chineseNumbers[0]; // 如果前一位是零,则在当前位加上“零”
zeroFlag = false;
}
result += chineseNumbers[digit] == "一" && unit == "十" ? unit : chineseNumbers[digit] + unit; // 加上当前位的数字和单位,当一十时,省略前面的一
} else {
zeroFlag = true; // 如果当前位是零,则标记为需要加上“零”
}
}
return result;
}
然后,设置一下 vitepress 基础配置和打包输出路径
export default defineConfig({
title: "周易",
description: "周易",
base: "/thebookofchanges/",
head: [
['link', { rel: 'icon', href: 'yi.svg' }] // 这里是你的 Logo 图片路径
],
outDir: 'docs', // 输出到 docs ,可以直接在 github pages 使用
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: '首页', link: '/' },
{ text: '阅读', link: '/zhouyi_1.md' }
],
logo: '/yi.svg',
sidebar: [
{
text: '目录',
items: getSidebar()
}
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/LarryZhu-dev/thebookofchanges' }
]
}
})
然后简单给网站设计一个 logo
字体是华文隶书,转化为路径后,将它拉瘦一点,再导出为 svg 。
最后,用 pnpm run docs:build
打包即可,打包时注意设置基本路径为 github pages 的仓库名。
push 到 github 后,在 Setting/Pages 页面发布即可。
最后,网站运行在:https://larryzhu-dev.github.io/thebookofchanges/
仓库地址:https://github.com/LarryZhu-dev/thebookofchanges 来点 star🤣
现在只有简单的原文,如有 《周易》大佬,欢迎大佬提交注解 PR 。
1
lingeo 218 天前
领人迷惑的项目。
|
2
bzj 218 天前
这种项目有 star 的必要吗
|
3
hero1874 218 天前
额,就像二手玫瑰上歌手 2024
|
4
WonderCc 218 天前
额,跟之前那个算命的相比还是差了些
|
5
SawyerGuo 218 天前
我还以为你整个卦象图出来了呢。原来你自己都不看不懂,那搞个纯古文有什么意义?
|
6
biutcoder 218 天前
赛博算卦+AI 解卦,命运的骰子攥在自己手里
|
7
larryzhu9952 OP @SawyerGuo 嗨,学习学习罢了,佬看一乐
|
8
vialon17 217 天前
医、数、卜、相、命理、风水一个都没有,
只看易是看不懂的。 |
9
Jaeger 217 天前
牛 B 感谢分享
|
10
WebKit 217 天前
搞个 AI 算命把
|
11
2P99RQ7o4Lds0GaI 217 天前
会算命的人可以用我的这个日历,懂得人都懂 https://apps.apple.com/cn/app/%E9%92%A6%E5%A4%A9/id1619353073?platform=iphone
|
12
pythoner 216 天前
我自己用小六壬,给自己断一些事情,非常的准
|
14
2P99RQ7o4Lds0GaI 216 天前 via iPhone
@jthoney 会周易的人才能体会到作用
|