diff --git a/astro.config.mjs b/astro.config.mjs index 6dc2691..978c5c8 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -2,6 +2,7 @@ import {defineConfig} from 'astro/config'; import solidJs from '@astrojs/solid-js'; import node from '@astrojs/node'; +import sitemap from "@astrojs/sitemap"; // https://astro.build/config export default defineConfig({ @@ -10,7 +11,7 @@ export default defineConfig({ server: { host: "0.0.0.0", }, - integrations: [solidJs()], + integrations: [solidJs(), sitemap()], adapter: node({ mode: 'standalone' }), diff --git a/package.json b/package.json index 5d75758..6a78d34 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@astrojs/node": "11.0.2", + "@astrojs/sitemap": "^3.7.3", "@astrojs/solid-js": "^5.1.3", "astro": "^7.0.6", "dayjs": "^1.11.21", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81267f9..6e74845 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@astrojs/node': specifier: 11.0.2 version: 11.0.2(astro@7.0.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.0)(rollup@4.62.2)) + '@astrojs/sitemap': + specifier: ^3.7.3 + version: 3.7.3 '@astrojs/solid-js': specifier: ^5.1.3 version: 5.1.3(@types/node@26.1.0)(lightningcss@1.32.0)(solid-js@1.9.14) @@ -140,6 +143,9 @@ packages: resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} engines: {node: '>=22.12.0'} + '@astrojs/sitemap@3.7.3': + resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} + '@astrojs/solid-js@5.1.3': resolution: {integrity: sha512-KxfYt4y1d7BuSw6EsN1EaPoGYsIES7bEI6AtTbncuabRUUMZs+mOWOeOdmgnwVLj+jbNbhBjUZsqr77eUviZdw==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} @@ -1168,9 +1174,15 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + '@types/node@24.13.2': + resolution: {integrity: sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==} + '@types/node@26.1.0': resolution: {integrity: sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==} + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -1188,6 +1200,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1915,6 +1930,11 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} + hasBin: true + smol-toml@1.7.0: resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==} engines: {node: '>= 18'} @@ -1938,6 +1958,9 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} + stream-replace-string@2.0.0: + resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -2001,6 +2024,9 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} + undici-types@7.28.0: resolution: {integrity: sha512-LJAfY+2w6HGeT8d8J1wNQsUGUEGio6NWWpwdwurQe4f6oojzCFuGLizl1KSve4irsTxyLly1QhEeE6iapdaIvQ==} @@ -2361,6 +2387,12 @@ snapshots: dependencies: prismjs: 1.30.0 + '@astrojs/sitemap@3.7.3': + dependencies: + sitemap: 9.0.1 + stream-replace-string: 2.0.0 + zod: 4.4.3 + '@astrojs/solid-js@5.1.3(@types/node@26.1.0)(lightningcss@1.32.0)(solid-js@1.9.14)': dependencies: solid-js: 1.9.14 @@ -3123,10 +3155,18 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/node@24.13.2': + dependencies: + undici-types: 7.18.2 + '@types/node@26.1.0': dependencies: undici-types: 8.3.0 + '@types/sax@1.2.7': + dependencies: + '@types/node': 26.1.0 + '@types/tough-cookie@4.0.5': {} '@types/unist@3.0.3': {} @@ -3142,6 +3182,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 + arg@5.0.2: {} + argparse@2.0.1: {} aria-query@5.3.2: {} @@ -3999,6 +4041,13 @@ snapshots: sisteransi@1.0.5: {} + sitemap@9.0.1: + dependencies: + '@types/node': 24.13.2 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.6.0 + smol-toml@1.7.0: {} solid-js@1.9.14: @@ -4022,6 +4071,8 @@ snapshots: statuses@2.0.2: {} + stream-replace-string@2.0.0: {} + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -4079,6 +4130,8 @@ snapshots: uncrypto@0.1.3: {} + undici-types@7.18.2: {} + undici-types@7.28.0: {} undici-types@8.3.0: {} diff --git a/public/favicon.svg b/public/favicon.svg index c929286..ee6584b 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,46 +1 @@ - - + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..c2a49f4 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/src/assets/icon/logo.png b/src/assets/icon/logo.png new file mode 100644 index 0000000..9773eeb Binary files /dev/null and b/src/assets/icon/logo.png differ diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 1cc8bec..fa63b43 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -6,6 +6,9 @@ import BaseFooter from "@/components/BaseFooter.astro"; import { metadata } from "@/consts.ts"; const { siteTitle } = metadata; + +const {title,description} = Astro.props; +const pageTitle = title ? `${title} - ${siteTitle}` : siteTitle; --- @@ -18,7 +21,8 @@ const { siteTitle } = metadata; /> -