Last modified git-based remark plugin, site URL

This commit is contained in:
2024-03-10 07:43:32 -05:00
parent 775d1ba88e
commit 9290bde8c7
4 changed files with 33 additions and 1 deletions

View File

@@ -3,10 +3,16 @@ import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import tailwind from "@astrojs/tailwind";
import { remarkModifiedTime } from './src/plugins/remark-last-modified';
import react from "@astrojs/react";
// https://astro.build/config
export default defineConfig({
site: 'https://example.com',
markdown: {
remarkPlugins: [
remarkModifiedTime
]
},
site: 'https://handbook.xevion.dev',
integrations: [mdx(), sitemap(), tailwind(), react()]
});

View File

@@ -20,6 +20,7 @@
"@types/react": "^18.2.64",
"@types/react-dom": "^18.2.21",
"astro": "^4.4.15",
"dayjs": "^1.11.10",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.71.1",

7
pnpm-lock.yaml generated
View File

@@ -35,6 +35,9 @@ dependencies:
astro:
specifier: ^4.4.15
version: 4.4.15(@types/node@20.11.25)(sass@1.71.1)(typescript@5.4.2)
dayjs:
specifier: ^1.11.10
version: 1.11.10
react:
specifier: ^18.2.0
version: 18.2.0
@@ -1665,6 +1668,10 @@ packages:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
dev: false
/dayjs@1.11.10:
resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
dev: false
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}

View File

@@ -0,0 +1,18 @@
import type { RemarkPlugins } from "astro";
import { execSync } from "child_process";
export const remarkModifiedTime: RemarkPlugins[number] = () => {
return function (_, file) {
const filepath = file.history[0];
const command = `git log -1 --pretty="format:%cI" "${filepath}"`;
let result = execSync(command).toString();
// File is not in git yet
if (result === "") {
result = new Date().toISOString();
}
// @ts-ignore
file.data.astro.frontmatter.lastModified = result;
};
};