虽然 VitePress 自带了读取.md
文件最近更新时间的功能,但是在写文档时插入 vue 动态组件时就需要手动实现一次这个功能。
起初试图找一个相关库,发现根本没人去做。
找了半天,终于在 Xavi 的技术文档 / VitePress 扩展首页内容里面找到了实现,然后突然发现VitePress 的仓库里不就有吗?顿时想给自己来一下。
于是结合二者功能搓了一个 TS 版本的。
import { spawn } from "cross-spawn"; //执行命令行操作 (git)
import fs from "fs-extra"; //读取文件信息 (比 node:fs 好用)
import { basename, dirname } from "path";
const cache = new Map<string, [number, number]>();
即--pretty="%ai"
或--pretty="%ci"
的问题。
其中ai
指的是author date,而ci
指的是committer date。
ai
仅在实际作者签名时发生改变,ci
会在有对该 commit 进行操作时变化。
具体来说,当你是实际贡献者并进行了一次签名时,二者均会变化 (如创建签名 修改签名历史),
而在如Git Merge 后某文件更改时,该文件的ai
不变但ci
变化为合并时间。
故这里我们使用ai
表示实际的 git 签名时间,不会受到合并的影响。
不包含已在文中注明来源的链接。
此文由 Mix Space 同步更新至 xLog
原始链接为 https://xrzyun.eu.org/posts/devlogs/read-git-timestamp-in-nodejs