-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvite.config.ts
34 lines (32 loc) · 985 Bytes
/
vite.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { readFile } from "fs/promises";
import { join } from "path";
import { RouteRecordRaw } from "vue-router";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
// @ts-ignore
// https://github.com/antfu/vite-ssg/blob/main/src/types.ts
ssgOptions: {
dirStyle: "nested",
includedRoutes: async (paths: string[], routes: RouteRecordRaw[]) => {
const jsonData = await readFile(join("public", "contents.json"));
const {
articles,
}: {
articles: {
baseFileName: string;
title: string;
description: string;
}[];
} = JSON.parse(jsonData.toString());
const newRoutes = routes.flatMap((route) => {
return route.name === "articles"
? articles.map((article) => `/articles/${article.baseFileName}`)
: route.path;
});
return newRoutes;
},
},
});