diff --git a/src/Blog/SearchHeader/TagCloud/TagCloud.tsx b/src/Blog/SearchHeader/TagCloud/TagCloud.tsx
index 6b32f54..7558c37 100644
--- a/src/Blog/SearchHeader/TagCloud/TagCloud.tsx
+++ b/src/Blog/SearchHeader/TagCloud/TagCloud.tsx
@@ -1,5 +1,15 @@
import Box from "@mui/material/Box";
+import { tags } from "../../../tags.js";
export function TagCloud() {
- return Tags;
+ return (
+
+ Tags
+
+ {[...tags.values()].map((tag) => (
+ - {tag}
+ ))}
+
+
+ );
}
diff --git a/src/tags.ts b/src/tags.ts
new file mode 100644
index 0000000..3b7a9fb
--- /dev/null
+++ b/src/tags.ts
@@ -0,0 +1,16 @@
+const modules = import.meta.glob>("./articles/*", {
+ import: "tags",
+ eager: true,
+});
+
+export const tags = Object.entries(modules).reduce(
+ (tagsSet, [modulePath, moduleTags]) => {
+ if (moduleTags) {
+ for (const tag of moduleTags) {
+ tagsSet.add(tag);
+ }
+ }
+ return tagsSet;
+ },
+ new Set()
+);
diff --git a/vite-plugin-tags.mjs b/vite-plugin-tags.mjs
deleted file mode 100644
index a659611..0000000
--- a/vite-plugin-tags.mjs
+++ /dev/null
@@ -1,35 +0,0 @@
-import fs from "node:fs";
-import path from "node:path";
-import { tsImport } from "tsx/esm/api";
-
-export default function tagsPlugin() {
- return {
- name: "tags-plugin",
- enforce: "post",
- async buildStart() {
- const articlesDir = path.resolve(process.cwd(), "src/articles");
- const allTags = new Set();
-
- for (const file of fs.readdirSync(articlesDir)) {
- const filePath = path.join(articlesDir, file);
- if (filePath.endsWith(".tsx") || filePath.endsWith(".ts")) {
- try {
- const module = await tsImport(filePath, import.meta.url);
- if (module.tags) {
- for (const tag of module.tags) {
- allTags.add(tag);
- }
- }
- } catch (e) {
- console.error(`Error importing ${file}:`, e);
- }
- }
- }
-
- fs.writeFileSync(
- path.resolve(process.cwd(), "tags.js"),
- `export const tags = ${JSON.stringify([...allTags.values()])};`
- );
- },
- };
-}
diff --git a/vite.config.ts b/vite.config.ts
index a581511..c5fc99c 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,12 +1,7 @@
import { defineConfig } from "vite";
import preact from "@preact/preset-vite";
-// import tagsPlugin from "./vite-plugin-tags.mjs";
// https://vitejs.dev/config/
export default defineConfig({
- plugins: [
- preact(),
- //@ ts-expect-error
- // tagsPlugin(),
- ],
+ plugins: [preact()],
});