Commit 4127dee

HPCesia <me@hpcesia.com>
2026-09-16 03:44:08
Add sitemap integration
1 parent 937254b
src/layouts/BaseLayout.astro
@@ -30,6 +30,7 @@ const {
 
     <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
     <link rel="icon" href="/favicon.ico" />
+    <link rel="sitemap" href="/sitemap-index.xml" />
 
     <title>{title}</title>
     <meta name="title" content={title} />
astro.config.ts
@@ -1,5 +1,6 @@
 import { defineConfig, fontProviders } from "astro/config";
 
+import sitemap from "@astrojs/sitemap";
 import { intlayer } from "astro-intlayer";
 import { typst } from "astro-typst";
 
@@ -21,6 +22,7 @@ export default defineConfig({
     responsiveStyles: true,
   },
   integrations: [
+    sitemap(),
     intlayer(),
     typst({
       options: {
@@ -28,7 +30,6 @@ export default defineConfig({
       },
       target: "html",
     }),
-    // Order-independent: only hooks into `astro:build:done`.
     extractImages(),
   ],
   markdown: {
deno.lock
@@ -2,6 +2,7 @@
   "version": "5",
   "specifiers": {
     "npm:@astrojs/markdown-remark@^7.2.2": "7.2.2",
+    "npm:@astrojs/sitemap@^3.7.4": "3.7.4",
     "npm:@intlayer/lsp@*": "9.5.2_typescript@6.0.3_zod@4.6.2",
     "npm:@myriaddreamin/typst-ts-node-compiler@~0.8.0-rc3": "0.8.0-rc3",
     "npm:@myriaddreamin/typst-ts-renderer@~0.8.0-rc3": "0.8.0-rc3",
@@ -91,7 +92,7 @@
         "@types/hast",
         "@types/mdast",
         "js-yaml",
-        "picomatch@4.0.5",
+        "picomatch@4.0.7",
         "retext-smartypants",
         "shiki",
         "smol-toml",
@@ -136,6 +137,13 @@
         "prismjs"
       ]
     },
+    "@astrojs/sitemap@3.7.4": {
+      "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==",
+      "dependencies": [
+        "sitemap",
+        "zod"
+      ]
+    },
     "@astrojs/telemetry@3.3.3": {
       "integrity": "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==",
       "dependencies": [
@@ -1154,7 +1162,7 @@
         "detect-libc",
         "is-glob",
         "node-addon-api",
-        "picomatch@4.0.5"
+        "picomatch@4.0.7"
       ],
       "optionalDependencies": [
         "@parcel/watcher-android-arm64",
@@ -1265,7 +1273,7 @@
       "dependencies": [
         "@types/estree",
         "estree-walker@2.0.2",
-        "picomatch@4.0.5"
+        "picomatch@4.0.7"
       ]
     },
     "@shikijs/core@4.3.1": {
@@ -1383,9 +1391,21 @@
         "@types/unist@3.0.3"
       ]
     },
+    "@types/node@24.13.4": {
+      "integrity": "sha512-YJ7EqCstVTzIr0fMr7qul/977en+pQHrfmuKIo6Zr9i75Be21dr3MovcfvGtyvi2HAUrRerWps5sMO9I7WaxDw==",
+      "dependencies": [
+        "undici-types"
+      ]
+    },
     "@types/resolve@1.20.2": {
       "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="
     },
+    "@types/sax@1.2.7": {
+      "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==",
+      "dependencies": [
+        "@types/node"
+      ]
+    },
     "@types/unist@2.0.11": {
       "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
     },
@@ -1425,6 +1445,9 @@
         "picomatch@2.3.2"
       ]
     },
+    "arg@5.0.2": {
+      "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
+    },
     "argparse@2.0.1": {
       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
     },
@@ -1519,7 +1542,7 @@
         "p-queue",
         "package-manager-detector",
         "piccolore",
-        "picomatch@4.0.5",
+        "picomatch@4.0.7",
         "semver",
         "shiki",
         "smol-toml",
@@ -1955,13 +1978,13 @@
         "reusify"
       ]
     },
-    "fdir@6.5.0_picomatch@4.0.5": {
+    "fdir@6.5.0_picomatch@4.0.7": {
       "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
       "dependencies": [
-        "picomatch@4.0.5"
+        "picomatch@4.0.7"
       ],
       "optionalPeers": [
-        "picomatch@4.0.5"
+        "picomatch@4.0.7"
       ]
     },
     "fill-range@7.1.1": {
@@ -3088,9 +3111,6 @@
     "picomatch@2.3.2": {
       "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="
     },
-    "picomatch@4.0.5": {
-      "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="
-    },
     "picomatch@4.0.7": {
       "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="
     },
@@ -3446,6 +3466,16 @@
     "sisteransi@1.0.5": {
       "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
     },
+    "sitemap@9.0.1": {
+      "integrity": "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==",
+      "dependencies": [
+        "@types/node",
+        "@types/sax",
+        "arg",
+        "sax"
+      ],
+      "bin": true
+    },
     "smol-toml@1.7.1": {
       "integrity": "sha512-PPlsspAZ4jbMBu5DMFhfUGDQLu/vrL4SyBROVS37x8ynnVmFIs1VPBz1Co8Xks3TvpIaZXmU85y4DrQ+UyVFoQ=="
     },
@@ -3518,7 +3548,7 @@
       "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
       "dependencies": [
         "fdir",
-        "picomatch@4.0.5"
+        "picomatch@4.0.7"
       ]
     },
     "to-regex-range@5.0.1": {
@@ -3580,6 +3610,9 @@
     "uncrypto@0.1.3": {
       "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="
     },
+    "undici-types@7.18.2": {
+      "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="
+    },
     "undici@7.29.0": {
       "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="
     },
@@ -3823,6 +3856,7 @@
     "packageJson": {
       "dependencies": [
         "npm:@astrojs/markdown-remark@^7.2.2",
+        "npm:@astrojs/sitemap@^3.7.4",
         "npm:@myriaddreamin/typst-ts-node-compiler@~0.8.0-rc3",
         "npm:@myriaddreamin/typst-ts-renderer@~0.8.0-rc3",
         "npm:@myriaddreamin/typst.ts@~0.8.0-rc3",
package.json
@@ -13,6 +13,7 @@
   },
   "dependencies": {
     "@astrojs/markdown-remark": "^7.2.2",
+    "@astrojs/sitemap": "^3.7.4",
     "@myriaddreamin/typst-ts-node-compiler": "^0.8.0-rc3",
     "@myriaddreamin/typst-ts-renderer": "^0.8.0-rc3",
     "@myriaddreamin/typst.ts": "^0.8.0-rc3",